SQL创建具有唯一项的另一列总和的列

时间:2020-03-11 12:48:25

标签: sql group-by unique

我对SQL有点新知识。因此,希望我能解决这个问题,因为我还没有找到答案。 我已经连接了其他来源的表,并且需要基于一个列的唯一值与另一个列的总和来创建新列。值。

例如,这是我的桌子:

enter image description here

这就是我需要得到的(A中每个唯一值的总和B作为一列添加)

enter image description here

现在,我可以像这样手动进行操作:

SELECT 
    EM.[id]
    ,SUM(CASE WHEN AM.[B]='ZA' THEN EM.[A] ELSE 0 END) "ZA_sum_A"
    ,SUM(CASE WHEN AM.[B]='ZB' THEN EM.[A] ELSE 0 END) "ZB_sum_A"
FROM [xxx].x.x  AS AM
  INNER JOIN [yyy].[y].[y] AS EM ON (AM.ELEMENT = EM.ELEMENT)
  WHERE ...
GROUP BY EM.[id]

但是问题是,B中可以有数百个唯一值。 因此,请问如何正确执行此操作。

1 个答案:

答案 0 :(得分:1)

如果您只想查看EM.[A]EM.[id]每种组合的AM.[B]的总和,则可以执行以下操作:

select
    em.[id],
    am.[B],
    sum(em.[A])
from [xxx].x.x as am
join [yyy].[y].[y] as em on am.ELEMENT = em.ELEMENT
where [...]
group by em.[id], am.[B]

如果您想让AM.[B]的不同值显示为列,那么EM.[id]的每个不同值只有一行,那么您要么需要知道{ {1}}是并使用AM.[B]

如果未知PIVOT的确切值,或者随着时间的变化经常变化,则您需要做一些动态的操作,例如在this answer中,但方向相反。

相关问题