小编典典

使用数据透视表转换SQL表的形状

sql

我有一些数据以以下格式存储在表格中

BatchID              EntityChanged             ChangeValue

EERS                  ABC                       DEF
EERS                  ABCD                      XYZ
EERS                  Something                 SomeValue
New Batch             SomethingMore             GHI

可以显示在“ EntityChanged”列中的值的列表是有限的,事先已知,并且其中没有空格等。为了争辩,让我们说这个列表是-
ABC,ABCD,something,somethingMore

然后对于上面的数据集,我想要一个输出

BatchID            ABC              ABCD            Something       SomethingMore
EERS               DEF              XYZ             SomeValue       NULL   
New Batch          NULL             NULL            NULL            GHI

使用Pivot,我只能走得那么远。

有人可以帮我按期望的方式分割这些数据吗?


阅读 161

收藏
2021-05-30

共1个答案

小编典典

试试这个:

SELECT BatchID, 
   MAX(CASE WHEN EntityChanged = 'ABC' THEN ChangeValue END) 'ABC',
   MAX(CASE WHEN EntityChanged = 'ABCD' THEN ChangeValue END) 'ABCD',
   MAX(CASE WHEN EntityChanged = 'Something' THEN ChangeValue END) 'Something',
   MAX(CASE WHEN EntityChanged = 'SomethingMore' THEN ChangeValue END) 'SomethingMore'
FROM YourTable t 
GROUP BY BatchID
2021-05-30