我有一个像下面这样的数据集(使用row_number OVER PARTITION创建的第一列):
RNEEAN NEEAN GFCUS SCSAC
NEAN1 9432806 94328 GE
NEAN2 9432807 94328 GE
NEAN3 94328472 94328 ES
NEAN4 9432848 94328 ES
NEAN5 9432875 94328 HK
NEAN6 9432876 94328 HK
NEAN7 9432877 94328 HK
NEAN8 9432878 94328 HK
NEAN9 9432879 94328 HK
我可以用下面的查询得到这个数据集:
select RNEEAN, NEEAN, GFCUS, SCSAC from #tmp where GFCUS=094328
现在我想通过RNEEAN来透视NEEAN列,所以我尝试了下面的操作:
SELECT MAX([NEEAN1]) [NEEAN1],MAX([NEEAN2]) [NEEAN2],MAX([NEEAN3]) [NEEAN3],
MAX([NEEAN4]) [NEEAN4], MAX([NEEAN5]) [NEEAN5],MAX([NEEAN6]) [NEEAN6],MAX([NEEAN7] [NEEAN7], MAX([NEEAN8]) [NEEAN8], MAX([NEEAN9]) [NEEAN9], GFCUS
from #tmp
PIVOT(
min(NEEAN) for RNEEAN in ([NEEAN1],[NEEAN2],[NEEAN3],[NEEAN4],[NEEAN5],[NEEAN6], [NEEAN7],[NEEAN8],[NEEAN9])
) p1
where GFCUS=094328
GROUP BY GFCUS
但我得到的是9 NULL列和GFCUS值。
我在哪里出错或错过了什么请?
问题在于您的RNEEAN
名称,然后是您在PIVOT
中使用的列名。
RNEEAN
列包含以NEAN
开头的数据,但随后您试图以NEEAN
的名称pivot值-如果列名不匹配,则您将返回null
。
select GFCUS, SCSAC,
NEAN1, NEAN2, NEAN3, NEAN4, NEAN5, NEAN6, NEAN7, NEAN8, NEAN9
from
(
select RNEEAN, NEEAN, GFCUS, SCSAC
from yourtable
) d
pivot
(
min(NEEAN)
for RNEEAN IN (NEAN1, NEAN2, NEAN3, NEAN4, NEAN5, NEAN6, NEAN7, NEAN8, NEAN9)
) piv;
看到演示