有人可以幫我通過 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397836.html
標籤:sql sql-server 查询语句 通过...分组 案件
