SQL sum by year report,寻找优雅的解决方案

本教程将介绍SQL sum by year report,寻找优雅的解决方案的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

SQL sum by year report,寻找优雅的解决方案 教程 第1张

问题描述

我有一个包含 3 列的表:ItemCode、Quantity 和 DocDate.我想以更优雅"的方式创建以下报告:

SELECT T0.ItemCode, 
 (SELECT SUM(QUANTITY) FROM MyTable T1 WHERE YEAR(T0.DocDate) = 2011 AND T0.ItemCode = T1.ItemCode) AS '2011',
 (SELECT SUM(QUANTITY) FROM MyTable T1 WHERE YEAR(T0.DocDate) = 2012 AND T0.ItemCode = T1.ItemCode) AS '2012'
FROM MyTable T0
GROUP BY T0.ItemCode, YEAR(T0.DocDate)

我很确定有更好、更有效的方法来编写它,但我想不出正确的语法.有什么想法吗?

推荐答案

你可以试试这个:

SELECT  T0.ItemCode, 
  SUM(CASE WHEN YEAR(T0.DocDate) = 2011 THEN QUANTITY ELSE 0 END) AS '2011',
  SUM(CASE WHEN YEAR(T0.DocDate) = 2012 THEN QUANTITY ELSE 0 END) AS '2012'
FROM MyTable T0
GROUP BY 
  T0.ItemCode

好了关于SQL sum by year report,寻找优雅的解决方案的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。