使用 CASE WHEN 语句而不是 GROUP BY 给出 null

Using CASE WHEN statement instead of GROUP BY gives null

查询:

SELECT 
        R.GlobalMarket,
        G.AreaName,
        SUM(R.Revenue)
FROM REVENUE R
    INNER JOIN AREA A
    ON R.AnID = A.AnID
GROUP BY R.GlobalMarket, G.AreaName,

给我正确的结果,如:

GlobalMarket  Area      Revenue
BFS           NA Area   
BFS           UK Area   
Some more values..

我正在尝试将区域结果作为列:

SELECT 
        R.GlobalMarket,
        CASE WHEN G.AreaName = 'NA Area' THEN SUM(R.Revenue) END AS 'NA Revenue',
        CASE WHEN G.AreaName = 'UK Area' THEN SUM(R.Revenue) END AS 'UK Revenue',
FROM REVENUE R
    INNER JOIN AREA A
    ON R.AnID = A.AnID
GROUP BY R.GlobalMarket

它给了我:

GlobalMarket  NA Revenue   UK Revenue
BFS                     null
Some more values..

谁能指出,为什么会这样

嗯,您在 CASE 中使用的逻辑似乎不正确。我相信,如果您尝试 运行 另一个数据库引擎中的相同查询,您可能会遇到错误。我认为您必须在 SUM 中使用 CASE 语句,而不是相反。所以转这个:

CASE WHEN G.AreaName = 'NA Area' THEN SUM(R.Revenue) END AS 'NA Revenue'

进入这个:

SUM(CASE WHEN G.AreaName = 'NA Area' THEN R.Revenue END) AS 'NA Revenue'

请尝试一下,如果有帮助请告诉我。