我有一个查询,如果其他两列上的 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 语句末尾的 GROUP BY 子句中
当使用以下逻辑时
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
关于sql-server - 选择计算中的列,但我不希望它出现在组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193347/