条件聚合中的总和列值
Sum columns values in conditional aggregation
我想在同一 select 的另一个小计列中添加 APLICACIONES、ARANDANOS 和 PALTO。然后在 TOTAL 中显示具有一个操作的另一列。 (总计 * 3)
SELECT Comedor = com.NombrePuntoEntrega
,APLICACIONES = SUM(case when a.NombreArea = 'APLICACIONES' then s.CantidadRaciones else 0 end)
,ARANDANOS = SUM(case when a.NombreArea = 'ARÁNDANOS' then s.CantidadRaciones else 0 end)
,PALTO = SUM(case when a.NombreArea = 'PALTO' then s.CantidadRaciones else 0 end)
FROM PPA_SolicitudRaciones c inner join
PPA_SolicitudRacionesDET S on c.IdSolicitud =s.IdSolicitud and s.IdLocalidad =c.IdLocalidad
INNER JOIN PPA_AREAS A ON A.IDLOCALIDAD=S.IDLOCALIDAD and a.IdArea =s.IdArea
INNER JOIN PPA_PuntosEntrega com on com.IdLocalidad =s.IdLocalidad and com.IdPuntoEntrega =s.IdPuntoEntrega
WHERE (s.IdLocalidad =@IdLocalidad or @IdLocalidad =0)
AND (s.IdArea =@IdArea or @IdArea =0)
AND (c.FechaPedido between @FechaDel and @FechaAl or @FechaDel ='1900.01.01' )
AND (c.IdTipoComida =@TipoComida or @TipoComida=0)
GROUP BY com.NombrePuntoEntrega
Comedor
APLICACIONES
ARANDANOS
PALTO
SUBTOTAL
TOTAL
1.1
200
1000
20
1220
3660
1.2
300
0
30
330
990
...
,SubTotal = SUM(case when a.NombreArea in ('APLICACIONES','ARÁNDANOS','PALTO') then s.CantidadRaciones else 0 end)
,Total = SUM(case when a.NombreArea in ('APLICACIONES','ARÁNDANOS','PALTO') then s.CantidadRaciones*3 else 0 end)
...
我想在同一 select 的另一个小计列中添加 APLICACIONES、ARANDANOS 和 PALTO。然后在 TOTAL 中显示具有一个操作的另一列。 (总计 * 3)
SELECT Comedor = com.NombrePuntoEntrega
,APLICACIONES = SUM(case when a.NombreArea = 'APLICACIONES' then s.CantidadRaciones else 0 end)
,ARANDANOS = SUM(case when a.NombreArea = 'ARÁNDANOS' then s.CantidadRaciones else 0 end)
,PALTO = SUM(case when a.NombreArea = 'PALTO' then s.CantidadRaciones else 0 end)
FROM PPA_SolicitudRaciones c inner join
PPA_SolicitudRacionesDET S on c.IdSolicitud =s.IdSolicitud and s.IdLocalidad =c.IdLocalidad
INNER JOIN PPA_AREAS A ON A.IDLOCALIDAD=S.IDLOCALIDAD and a.IdArea =s.IdArea
INNER JOIN PPA_PuntosEntrega com on com.IdLocalidad =s.IdLocalidad and com.IdPuntoEntrega =s.IdPuntoEntrega
WHERE (s.IdLocalidad =@IdLocalidad or @IdLocalidad =0)
AND (s.IdArea =@IdArea or @IdArea =0)
AND (c.FechaPedido between @FechaDel and @FechaAl or @FechaDel ='1900.01.01' )
AND (c.IdTipoComida =@TipoComida or @TipoComida=0)
GROUP BY com.NombrePuntoEntrega
Comedor | APLICACIONES | ARANDANOS | PALTO | SUBTOTAL | TOTAL |
---|---|---|---|---|---|
1.1 | 200 | 1000 | 20 | 1220 | 3660 |
1.2 | 300 | 0 | 30 | 330 | 990 |
...
,SubTotal = SUM(case when a.NombreArea in ('APLICACIONES','ARÁNDANOS','PALTO') then s.CantidadRaciones else 0 end)
,Total = SUM(case when a.NombreArea in ('APLICACIONES','ARÁNDANOS','PALTO') then s.CantidadRaciones*3 else 0 end)
...