【发布时间】:2019-06-05 13:19:35
【问题描述】:
我有如下查询结果:
dday showtime qty total
2019-06-03 Sat 22/6 - 2:30 PM 1 50.00
2019-06-03 Sat 22/6 - 7:00 PM 1 50.00
2019-06-04 NULL NULL NULL
我想以此为轴并显示一个新结果,将放映时间作为列,将“数量”和每个“dday”的总数相加,如下所示:
DAY [Fri 21/6 - 7:00 PM] [Sat 22/6 - 2:30 PM] [Sat 22/6 - 7:00 PM] TICKETS AMOUNT
Jun 3 0 1 1 2 100.00
Jun 4 0 0 0 0 NULL
我正在使用这个查询:
SELECT
CONVERT(CHAR(4), dday, 0) + CAST(DAY(dday) AS VARCHAR) 'DAY'
, SUM(ISNULL([Thu 20/6 - 7:00 PM],0)) [Thu 20/6 - 7:00 PM],SUM(ISNULL([Fri 21/6 - 7:00 PM],0)) [Fri 21/6 - 7:00 PM],SUM(ISNULL([Sat 22/6 - 2:30 PM],0)) [Sat 22/6 - 2:30 PM],SUM(ISNULL([Sat 22/6 - 7:00 PM],0)) [Sat 22/6 - 7:00 PM]
, SUM(ISNULL([Thu 20/6 - 7:00 PM],0)+ISNULL([Fri 21/6 - 7:00 PM],0)+ISNULL([Sat 22/6 - 2:30 PM],0)+ISNULL([Sat 22/6 - 7:00 PM],0)) 'TICKETS'
, SUM(total) 'AMOUNT'
FROM z
PIVOT
(
MAX(qty)
FOR showtime IN ([Thu 20/6 - 7:00 PM],[Fri 21/6 - 7:00 PM],[Sat 22/6 - 2:30 PM],[Sat 22/6 - 7:00 PM])
) AS P
GROUP BY dday
ORDER BY dday
但是我得到了这个结果:
DAY [Fri 21/6 - 7:00 PM] [Sat 22/6 - 2:30 PM] [Sat 22/6 - 7:00 PM] TICKETS AMOUNT
Jun 3 0 1 1 2 50.00
Jun 4 0 0 0 0 NULL
数量“票”总和是正确的,但为什么金额总和显示为 50.00 而不是 100.00??
替代方案
我使用了另一种方法,应用 OUTER APPLY:
SELECT
CONVERT(CHAR(4), dday, 0) + CAST(DAY(dday) AS VARCHAR) 'DAY'
, SUM(ISNULL([Thu 20/6 - 7:00 PM],0)) [Thu 20/6 - 7:00 PM],SUM(ISNULL([Fri 21/6 - 7:00 PM],0)) [Fri 21/6 - 7:00 PM],SUM(ISNULL([Sat 22/6 - 2:30 PM],0)) [Sat 22/6 - 2:30 PM],SUM(ISNULL([Sat 22/6 - 7:00 PM],0)) [Sat 22/6 - 7:00 PM]
, SUM(ISNULL([Thu 20/6 - 7:00 PM],0)+ISNULL([Fri 21/6 - 7:00 PM],0)+ISNULL([Sat 22/6 - 2:30 PM],0)+ISNULL([Sat 22/6 - 7:00 PM],0)) 'TICKETS'
, SUPERTOTAL 'AMOUNT'
FROM z AS j
OUTER APPLY
(
SELECT SUM(total) 'SUPERTOTAL'
FROM z AS x
WHERE x.dday = j.dday
) x
PIVOT
(
MAX(qty)
FOR showtime IN ([Thu 20/6 - 7:00 PM],[Fri 21/6 - 7:00 PM],[Sat 22/6 - 2:30 PM],[Sat 22/6 - 7:00 PM])
) AS P
GROUP BY dday, SUPERTOTAL
ORDER BY dday
在这种情况下,它可以工作,但我真的需要为每个额外的总和应用这个“子查询”吗?是否有可能一次获得我想要的结果?
【问题讨论】:
-
您有足够的声誉知道数据图像的接收率很低。请务必花时间提供格式为
text或DDL 和DML 语句的数据;而不是期望志愿者转录您的图像。
标签: sql-server-2012 sum pivot