我有一个如下所示的数据集(使用ROW_NUMNBER 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值。
我哪里出错了或遗失了什么?
答案 0 :(得分:2)
问题在于您的RNEEAN
名称,以及您在PIVOT
中使用的列名。
RNEEAN
列包含以NEAN
开头的数据,但您尝试使用名称NEEAN
来转移值 - 如果列名称不匹配,则您将返回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;
请参阅Demo