总结 SQL Server 或 Oracle 中的聚合
我正在运行下面的查询,需要在底部包含总计,但不确定如何在 SQL Server 中运行它。我可以复制数据并在 Excel 中进行自动求和,但这有点重复。我怎样才能实现这个目标?
SELECT
LOCATION,
SUM(CASE WHEN my_date >= '10/1/2009' AND my_date <'01/01/2010' THEN QTY
ELSE NULL END) AS QTR1,
SUM(CASE WHEN my_date >= '01/1/2010' AND my_date <'04/01/2010' THEN QTY
ELSE NULL END) AS QTR2,
SUM(CASE WHEN my_date >= '04/1/2010' AND my_date <'07/01/2010' THEN QTY
ELSE NULL END) AS QTR3,
SUM(CASE WHEN my_date >= '07/1/2010' AND my_date <'10/01/2010' THEN QTY
ELSE NULL END) AS QTR4
FROM MYTABLE
GROUP BY location
Location QTR1 QTR2 QTR3 QTR4
FL 171 174 99 177
MD 662 640 422 497
VA 2,713 4,454 3,062 2,793
NY 479 380 227 477
PA 7,197 10,078 5,625 6,448
NJ 2,626 3,848 2,428 2,089
TOTAL ??? ??? ??? ???
I am running the query below and need to include a total at the bottom but not sure how to run it in SQL Server. I can copy the data and do an auto sum in Excel but it's a bit repetitive. How can I achieve this?
SELECT
LOCATION,
SUM(CASE WHEN my_date >= '10/1/2009' AND my_date <'01/01/2010' THEN QTY
ELSE NULL END) AS QTR1,
SUM(CASE WHEN my_date >= '01/1/2010' AND my_date <'04/01/2010' THEN QTY
ELSE NULL END) AS QTR2,
SUM(CASE WHEN my_date >= '04/1/2010' AND my_date <'07/01/2010' THEN QTY
ELSE NULL END) AS QTR3,
SUM(CASE WHEN my_date >= '07/1/2010' AND my_date <'10/01/2010' THEN QTY
ELSE NULL END) AS QTR4
FROM MYTABLE
GROUP BY location
Location QTR1 QTR2 QTR3 QTR4
FL 171 174 99 177
MD 662 640 422 497
VA 2,713 4,454 3,062 2,793
NY 479 380 227 477
PA 7,197 10,078 5,625 6,448
NJ 2,626 3,848 2,428 2,089
TOTAL ??? ??? ??? ???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
GROUP BY LOCATION AND ROLLUP
是否满足您的需要?退货
Does
GROUP BY LOCATION WITH ROLLUP
do what you need?Returns
我认为这个的变体应该有效。只需删除按位置分组并使用以下查询:
I think a variant of this should work. Just remove the grouping by location and use this query: