Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2014透视期间出错_Sql_Sql Server - Fatal编程技术网

SQL Server 2014透视期间出错

SQL Server 2014透视期间出错,sql,sql-server,Sql,Sql Server,我试图创建pivot,其中行是Brand和SKU,sum是YYMM列的qty,但我不确定它为什么会抛出错误。请帮忙 代码: 枢轴代码: select * from (select BRAND, sku, QTY, YYMM from @TABLE) src pivot (sum(QTY) for [Year Month] 您忘记完成查询了 请参见文章底部的PIVOT示例 我猜您希望您的查询看起来像这样: SELECT * FROM(

我试图创建pivot,其中行是Brand和SKU,sum是YYMM列的qty,但我不确定它为什么会抛出错误。请帮忙

代码:

枢轴代码:

select *
from
    (select 
         BRAND, sku, QTY, YYMM
     from @TABLE) src
pivot
    (sum(QTY)
     for [Year Month] 

您忘记完成查询了

请参见文章底部的
PIVOT
示例

我猜您希望您的查询看起来像这样:

SELECT *
FROM(
    SELECT BRAND, sku, QTY, YYMM
    FROM @TABLE
) AS src
PIVOT(
    sum(QTY)
    for [YYMM] IN( [2015-January], [2016-January], [2017-January] /* add other moneths here */ )
) AS Pivoted

您忘记完成查询了

请参见文章底部的
PIVOT
示例

我猜您希望您的查询看起来像这样:

SELECT *
FROM(
    SELECT BRAND, sku, QTY, YYMM
    FROM @TABLE
) AS src
PIVOT(
    sum(QTY)
    for [YYMM] IN( [2015-January], [2016-January], [2017-January] /* add other moneths here */ )
) AS Pivoted

我们可以将其作为动态sql

DECLARE @Column  NVARCHAR(max), 
        @Column2 NVARCHAR(max), 
        @Sql     NVARCHAR(max) 

SELECT @Column = Stuff((SELECT DISTINCT ', ' 
                                        + Quotename(Cast(yymm AS VARCHAR(20))) 
                        FROM   #table 
                        FOR xml path ('')), 1, 1, '') 

SELECT @Column2 = Stuff((SELECT DISTINCT ', ' + 'ISNULL(' 
                                         + Quotename(Cast(yymm AS VARCHAR(20))) 
                                         + ',' 
                                         + '''0''' + ') AS ' 
                                         + Quotename(Cast(yymm AS VARCHAR(20))) 
                         FROM   #table 
                         FOR xml path ('')), 1, 1, '') 

SET @Sql='

SELECT BRAND ,sku,'+@Column2+'
FROM(
    SELECT *
    FROM #TABLE
) AS src
PIVOT(
    sum(QTY)
    for [YYMM] IN('+@Column+')
) AS Pivoted
'
PRINT  @Sql

EXEC(@Sql)
结果

BRAND       sku         2015-January    2016-January    2017-January    2018-January    2019-January
--------------------------------------------------------------------------------------------------------
abott       104590691   0               0                   0               0               10
abott       104591168   2               0                   0               0               0
abott       10467011A   0               0                   0               2               0
GSK         104580709   0               2                   0               0               0
RANBAXCY    104720038   0               0                   2               0               0

我们可以将其作为动态sql

DECLARE @Column  NVARCHAR(max), 
        @Column2 NVARCHAR(max), 
        @Sql     NVARCHAR(max) 

SELECT @Column = Stuff((SELECT DISTINCT ', ' 
                                        + Quotename(Cast(yymm AS VARCHAR(20))) 
                        FROM   #table 
                        FOR xml path ('')), 1, 1, '') 

SELECT @Column2 = Stuff((SELECT DISTINCT ', ' + 'ISNULL(' 
                                         + Quotename(Cast(yymm AS VARCHAR(20))) 
                                         + ',' 
                                         + '''0''' + ') AS ' 
                                         + Quotename(Cast(yymm AS VARCHAR(20))) 
                         FROM   #table 
                         FOR xml path ('')), 1, 1, '') 

SET @Sql='

SELECT BRAND ,sku,'+@Column2+'
FROM(
    SELECT *
    FROM #TABLE
) AS src
PIVOT(
    sum(QTY)
    for [YYMM] IN('+@Column+')
) AS Pivoted
'
PRINT  @Sql

EXEC(@Sql)
结果

BRAND       sku         2015-January    2016-January    2017-January    2018-January    2019-January
--------------------------------------------------------------------------------------------------------
abott       104590691   0               0                   0               0               10
abott       104591168   2               0                   0               0               0
abott       10467011A   0               0                   0               2               0
GSK         104580709   0               2                   0               0               0
RANBAXCY    104720038   0               0                   2               0               0
您在查询结束时缺少
,但是[Year-Month]的
也有问题。请编辑您的问题添加错误和所需结果。您还可以阅读有关PIVOT的信息。什么错误?!?不要嘲笑我们有一个错误,然后你实际上没有告诉我们它是什么-记住:我们无法阅读你的屏幕,也无法理解你的想法-你必须告诉我们,并在这里提供它,以便我们可以提供帮助!您在查询结束时缺少
,但是[Year-Month]
也有问题。请编辑您的问题添加错误和所需结果。您还可以阅读有关PIVOT的信息。什么错误?!?不要嘲笑我们有一个错误,然后你实际上没有告诉我们它是什么-记住:我们无法阅读你的屏幕,也无法理解你的想法-你必须告诉我们,并在这里提供它,以便我们可以提供帮助!