使用 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'
请尝试一下,如果有帮助请告诉我。
查询:
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'
请尝试一下,如果有帮助请告诉我。