有人可以帮我通过 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
非常感谢!
uj5u.com热心网友回复:
事实是,如果我们看不到源资料,我们就无法回答。我敢猜测这是戴尔在评论中提到的:
如果您的 3 Category1[DivisionName]
在原始 table 中有不同的s ,它们将作为单独的行回传。Group By
在 之前“执行” select
,因此如果您想根据计算建立新资料,您应该在派生表中执行此操作:
SELECT
'2' AS report,
DepartmentName,
derived_table.DivisionName, -- alias added
Rank,
CASE
WHEN derived_table.DivisionName = '' THEN NULL
ELSE AVG(Amount)
END AS Amount,
FROM
#Report
cross apply
(
select CASE
WHEN @GroupBy = 'Division' THEN DivisionName
WHEN @GroupBy = 'Department' THEN ''
END AS DivisionName
) as derived_table
GROUP BY
DepartmentName,
derived_table.DivisionName,
Rank
0 评论