(Un)在SQL上转动表

时间:2015-06-10 17:01:50

标签: sql-server pivot

我试图创建一个矩阵,其中包含我在表格中的某些参数的历史数据。问题是,当我试图转动它时,不会工作。使用以下代码

    SELECT concept,
        [1] '1993', 
        <...>,
        [23] '2015'
    FROM
        (SELECT concept, YEAR(begin_date) as year, value
         FROM params p WITH(NOLOCK)) AS st
    PIVOT
    (
        SUM(value)
        FOR year IN ([1], <...>, [23])
    ) AS pt

只返回一个满NULL值的矩阵。另一方面,我使用其他查询

获得了正确的值
    SELECT pt.year 'Year', 
        [1], 
        <...>,
        [38]
    FROM 
        (SELECT concept, YEAR(begin_date) as year, value
        FROM parameters p WITH(NOLOCK)) AS st
    PIVOT
    (
        SUM(value)
        FOR concept IN ([1], <...>, [38])
    ) AS pt

但是那时列和行应该是另一种方式。 造成这种情况的原因是什么?怎么可以解决? 提前致谢

1 个答案:

答案 0 :(得分:0)

你有:

year IN ([1], <...>, [23])

这可能应该是

year IN ([1993], <...>, [2015])

当然,选择部分中的那些列也是如此:

SELECT concept,
    [1993], 
    <...>,
    [2015]