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

Duda con el if y el case

Estas en el tema de Duda con el if y el case en el foro de SQL Server en Foros del Web. Hola: Estoy haciendo esta consulta en sql y no sé a que se debe el error, la consulta es la siguiente y quiero que siempre ...
  #1 (permalink)  
Antiguo 11/05/2011, 07:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 12 años, 11 meses
Puntos: 0
Duda con el if y el case

Hola:
Estoy haciendo esta consulta en sql y no sé a que se debe el error, la consulta es la siguiente y quiero que siempre que el saldo sea mayor que 0 si las unidades son mayor que uno me clacula la existencia de una forma y si no la disminuye.

SELECT TOP (100) PERCENT dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.ReporteCualitativoDetalle.IdPlantilla,
COUNT(dbo.PisosVenta.IdUnidad) AS Unidades, dbo.Plantilla.Nombre, SUM(dbo.ReporteCualitativoDetalle.Saldo) AS Saldo,
if COUNT(dbo.ReporteCualitativoDetalle.Saldo)>0
begin
case COUNT(dbo.PisosVenta.IdUnidad) when 1 then COUNT(DISTINCT dbo.ReporteCualitativoDetalle.Saldo) else COUNT(DISTINCT dbo.ReporteCualitativoDetalle.Saldo)-1 end
end
AS Existe FROM dbo.Plantilla INNER JOIN
dbo.ReporteCualitativoDetalle ON dbo.Plantilla.IdPlantilla = dbo.ReporteCualitativoDetalle.IdPlantilla INNER JOIN
dbo.ReporteCualitativo ON dbo.ReporteCualitativoDetalle.IdPiso = dbo.ReporteCualitativo.IdPiso INNER JOIN
dbo.PisosVenta ON dbo.ReporteCualitativoDetalle.IdPiso = dbo.PisosVenta.IdPiso WHERE (dbo.PisosVenta.Abierta = 1)AND (dbo.PisosVenta.IdDivision = @IdUC)AND (dbo.ReporteCualitativo.Fecha=@Fecha) GROUP BY dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.Plantilla.Nombre, dbo.ReporteCualitativoDetalle.IdPlantilla,
dbo.PisosVenta.Abierta HAVING (COUNT(dbo.ReporteCualitativoDetalle.Saldo) > 0) ORDER BY dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.ReporteCualitativoDetalle.IdPlantilla

alguien me pudiera ayudar?
  #2 (permalink)  
Antiguo 11/05/2011, 07:28
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 con el if y el case


SELECT TOP (100) PERCENT dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.ReporteCualitativoDetalle.IdPlantilla,
COUNT(dbo.PisosVenta.IdUnidad) AS Unidades, dbo.Plantilla.Nombre, SUM(dbo.ReporteCualitativoDetalle.Saldo) AS Saldo,
case
when
COUNT(dbo.ReporteCualitativoDetalle.Saldo)=1
then COUNT(DISTINCT dbo.ReporteCualitativoDetalle.Saldo) else COUNT(DISTINCT dbo.ReporteCualitativoDetalle.Saldo)-1 end
AS Existe FROM dbo.Plantilla INNER JOIN
dbo.ReporteCualitativoDetalle ON dbo.Plantilla.IdPlantilla = dbo.ReporteCualitativoDetalle.IdPlantilla INNER JOIN
dbo.ReporteCualitativo ON dbo.ReporteCualitativoDetalle.IdPiso = dbo.ReporteCualitativo.IdPiso INNER JOIN
dbo.PisosVenta ON dbo.ReporteCualitativoDetalle.IdPiso = dbo.PisosVenta.IdPiso WHERE (dbo.PisosVenta.Abierta = 1)AND (dbo.PisosVenta.IdDivision = @IdUC)AND (dbo.ReporteCualitativo.Fecha=@Fecha) GROUP BY dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.Plantilla.Nombre, dbo.ReporteCualitativoDetalle.IdPlantilla,
dbo.PisosVenta.Abierta HAVING (COUNT(dbo.ReporteCualitativoDetalle.Saldo) > 0) ORDER BY dbo.ReporteCualitativo.Fecha, dbo.PisosVenta.IdDivision, dbo.ReporteCualitativoDetalle.IdPlantilla


Saludos!!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: case
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 08:12.