PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

Man*_*tto 6 sql sql-server sql-server-2008

当我尝试替换为时null,我收到以下错误消息zero

PIVOT 运算符中指定的列名“jan”与 PIVOT 参数中的现有列名冲突。

查询如下:

select * from(select isnull(jan,0),isnull(feb,0),sum(data) as amount )as p
pivot(
sum(amount) for month in(jan,feb)) as piv
Run Code Online (Sandbox Code Playgroud)

Fut*_*Fan 1

您可以用来CTE定义空值,然后对数据进行透视,如下所示:

;WITH t
AS (
    SELECT isnull(jan, 0) AS jan
        ,isnull(feb, 0) AS feb
        ,sum(data) AS amount
    FROM your_table --change this to match your table name
    GROUP BY jan,feb
    )
SELECT *
FROM (
    SELECT t.jan
        ,t.feb
        ,t.amount
    FROM t
    )
pivot(sum(amount) FOR [month] IN (
            jan
            ,feb
            )) AS piv
Run Code Online (Sandbox Code Playgroud)