NULL values returned by pivot



我有一个像下面这样的数据集(使用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;

看到演示

最新更新