Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Duda sobre CASE

Estas en el tema de Duda sobre CASE en el foro de SQL Server en Foros del Web. Hola buenos dias compañeros Tengo esta consulta. SELECT DISTINCT(cod_suc), COUNT(cat_dis) AS cant_venta_con , CASE WHEN cant_ventas_con = NULL THEN cant_ventas_con = 0 Me gustaria saber ...
  #1 (permalink)  
Antiguo 29/07/2011, 08:21
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Duda sobre CASE

Hola buenos dias compañeros

Tengo esta consulta.

SELECT DISTINCT(cod_suc), COUNT(cat_dis) AS cant_venta_con ,
CASE WHEN cant_ventas_con = NULL THEN cant_ventas_con = 0


Me gustaria saber si se puede hacer o no, mi idea es que si el count es NULL, ese campo pase a ser CERO ..

Me arroja error de sintaxis cerca al signo =

Gracias....
  #2 (permalink)  
Antiguo 29/07/2011, 09:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda sobre CASE

SELECT DISTINCT(cod_suc), COUNT(cat_dis) AS cant_venta_con ,
CASE WHEN cant_ventas_con is NULL THEN cant_ventas_con = 0 end as campo
from tabla


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 29/07/2011, 09:58
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Duda sobre CASE

Hola compañero

Gracias por la ayuda

Me aparece Sintaxis incorrecta cerca de '='. , bueno pero no importa , la solucion fue

SELECT DISTINCT(cod_suc), COUNT(coalesce(cat_dis,0)) AS cant_venta_con
from temporalGerente
GROUP BY cod_suc

Gracias de todas maneras
  #4 (permalink)  
Antiguo 29/07/2011, 10:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Duda sobre CASE

Hola informacionsys:

La funcion COALESCE que utilizas es de hecho una equivalencia de un CASE, pero haciendo más o menos lo siguiente:

Código SQL:
Ver original
  1. SELECT DISTINCT(cod_suc),
  2. CASE WHEN COUNT(cat_dis) IS NULL THEN 0 ELSE COUNT(cat_dis) END cant_venta_con
  3. FROM temporalGerente
  4. GROUP BY cod_suc

intenté probarla en SQL Server, pero no pude recordar un caso donde un COUNT regrese vacio... Según yo en todo caso debería regresar un cero por defecto, pero igual y sería interesante que nos pusieras la estructura de tus tablas y algunos datos de ejemplo para que la consulta regrese un null...

Saludos
Leo.
  #5 (permalink)  
Antiguo 29/07/2011, 10:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda sobre CASE

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola informacionsys:

La funcion COALESCE que utilizas es de hecho una equivalencia de un CASE, pero haciendo más o menos lo siguiente:

Código SQL:
Ver original
  1. SELECT DISTINCT(cod_suc),
  2. CASE WHEN COUNT(cat_dis) IS NULL THEN 0 ELSE COUNT(cat_dis) END cant_venta_con
  3. FROM temporalGerente
  4. GROUP BY cod_suc

intenté probarla en SQL Server, pero no pude recordar un caso donde un COUNT regrese vacio... Según yo en todo caso debería regresar un cero por defecto, pero igual y sería interesante que nos pusieras la estructura de tus tablas y algunos datos de ejemplo para que la consulta regrese un null...

Saludos
Leo.

Asi como lo pone leonardo esta bien, en la sentecia que le mande al compañero igual y le seguia marcando error porque estaba usando el campo cant_venta_con dentro del case y este campo es un alias del count, por eso es que le marcaba error cerca de =.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 29/07/2011, 17:06
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años
Puntos: 21
Respuesta: Duda sobre CASE


En vez de usar el Case Porque no usas la funcion Isnull, esta funcion lo que ace es q si es null lo reemplazo por otro valor q tu le indiques, asi:

Código SQL:
Ver original
  1. ISNULL(COUNT(cat_dis),0)


Etiquetas: case, select, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:36.