SQL Server 2008 分组依据和大小写。分组依据不起作用

SQL Server 2008 with group by and case. Group by is not working

有人可以帮我解决我的 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  

非常感谢!

事实是,如果我们看不到源数据,我们无法回答。我猜这就是 Dale 在评论中提到的内容:

如果您的 3 个类别 1 在 原始 table 中有不同的 [DivisionName],它们将作为单独的行返回。 Group Byselect 之前“执行”,因此如果您希望新数据基于计算,您应该在派生的 table:

中执行
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