SQL汇总报告,寻找优雅的解决方案
发布时间:2021-05-11 20:09:54 所属栏目:MsSql教程 来源:网络整理
导读:我有一个包含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) F
我有一个包含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 – 从已连接表的列表中选择唯一列名
- SQL中NULL是何意思?如何使用?
- sql-server – 可能攻击我的SQL服务器?
- sql-server – 如何在SQL Server 2017中使用SNAPSHOT_MATER
- sql-server – 恢复数据库,不包括FILESTREAM数据
- SQL server中怎样做锁表和解锁表的操作?
- sql – Oracle Analytic函数 – 重置窗口子句
- sql-server-2008 – 托管我的网站和数据库与不同的提供商是
- sql-server – 如何使用外部SQL数据库中的数据填充SharePoi
- sql-server – 将SQL Server实例根目录放在单独的驱动器上是