【问题标题】:NULL values returned by pivot枢轴返回的 NULL 值
【发布时间】:2014-09-26 22:46:59
【问题描述】:

我有一个如下所示的数据集(使用 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 值。

请问我哪里出错或遗漏了什么?

【问题讨论】:

    标签: tsql sql-server-2008-r2 pivot


    【解决方案1】:

    问题在于您的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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多