列选择计算,但我不希望它在组
我有一个查询,如果其他两列的datediff
小于一个值,但我不想按列组合计算。有人能告诉我做这件事的最好方法吗?我想到一个嵌套的查询或使用数据透视,但都没有给我想要的。这里是SQL:列选择计算,但我不希望它在组
SELECT
Col7,
Col8,
Case when datediff (dd,col3,col4) < 30 then Sum(Col2) ELSE 0 END as [30days],
Case when datediff (dd,col3,col4) < 60 then Sum(Col2) ELSE 0 END as [60days]
FROM Table
Group BY
Col7, Col8
我不要Col3
或Col4
想组。
表达式SQL语句
结束时使用以下逻辑
Case when datediff (dd,col3,col4) < 30 then Sum(Col2) ELSE 0 END as [30days],
这不是视为Col7和Col8可以分组的一个集合函数。与
SUM(Case when datediff (dd,col3,col4) < 30 then Col2 ELSE 0 END) as [30days],
更换这个逻辑将解决这个问题
详情请阅读此Group by MSDN artcle
谢谢。 MSDN文章也很有帮助。 – user2588110
我的问题已解决,您有[接受答案](http://stackoverflow.com/tour)。如果没有给我们一个反馈 – Hadi
您需要将Case..when 之外将您的SUM()试试这个:未在聚合函数中封装必须包含在GROUP BY子句中
SELECT
Col7,
Col8,
SUM(Case when datediff (dd,col3,col4) < 30 then Col2 ELSE 0 END) as [30days],
SUM(Case when datediff (dd,col3,col4) < 60 then Col2 ELSE 0 END) as [60days]
FROM Table
Group BY
Col7, Col8
谢谢。不知道我在想什么。 – user2588110
你熟悉公用表表达式?没有看到底层数据是如何构建的,我认为这将是您的最佳选择。你能提供一些关于数据的细节吗? –
'sum(case when datediff(dd,col3,col4) ZLK
您可以添加表结构并指定主键以及一些示例数据吗? – andrews