【发布时间】:2022-01-24 05:51:02
【问题描述】:
有人可以帮我解决group by的问题
我有这个 SQL 代码(在 SQL Server 2008 中)
SELECT DISTINCT
'2' AS report,
DepartmentName,
CASE
WHEN @GroupBy = 'Division' THEN DivisionName
WHEN @GroupBy = 'Department' THEN ''
END AS DivisionName,
Rank,
CASE
WHEN DivisionName = '' THEN NULL
ELSE AVG(Amount)
END AS Amount,
FROM
#Report
GROUP BY
DepartmentName,
DivisionName,
Rank
它不是按部门分组(我得到 3 个 Category1,因为它们属于 3 个不同的部门)。你知道为什么吗?
2 Group 0 Category1
2 Group 0 Category1
2 Group 0 Category1
2 Group 0 Category2
2 Group 0 Category3
2 Group 0 Category4
2 Group 0 Category15
提前非常感谢!
【问题讨论】:
-
SQL Server 2008 和 2008 R2 在几年前就已终止使用,现在完全不受支持。您真的应该考虑升级到受支持的版本。
-
我的公司仍然拥有它...
-
请向minimal reproducible example 提供样本数据以支持您想要的结果。而且我建议将
group by与distinct结合起来会让人感到困惑和自找麻烦。 -
仅供参考,当您按
DivisionName分组时,它是按原始列而不是别名分组。 -
通常在使用条件聚合时,您会用聚合函数包围 整个
CASE表达式,而不仅仅是WHEN中的表达式。
标签: sql sql-server tsql group-by case