Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 Pivot查询语法斗争_Sql_Sql Server_Tsql_Pivot - Fatal编程技术网

与SQL Pivot查询语法斗争

与SQL Pivot查询语法斗争,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,有人告诉我我的SQL有什么问题吗,今天很难做到这一点。错误是: 消息156,第15级,状态1,第11行 关键字“select”附近的语法不正确 Msg 102,15级,状态1,第11行 “')附近的语法不正确 我想要的形状是。。。以年为列名,然后每月12行。下面只是为了说明形状 // var data = google.visualization.arrayToDataTable([ // ['Month', '2013', '2014', '2015'],

有人告诉我我的SQL有什么问题吗,今天很难做到这一点。错误是:

消息156,第15级,状态1,第11行

关键字“select”附近的语法不正确

Msg 102,15级,状态1,第11行

“')附近的语法不正确

我想要的形状是。。。以年为列名,然后每月12行。下面只是为了说明形状

        //   var data = google.visualization.arrayToDataTable([
        //  ['Month', '2013', '2014', '2015'],
        //  ['Jan', 10, 30, 31],
        //  ['Feb', 11, 30, 32],
        //]);

pivot的语法如下():


我不知道您的模式是什么,所以表/列名可能有错误。如果这没有帮助,我可以更准确地说,如果您共享您的模式和示例数据。

pivot的语法如下():


我不知道您的模式是什么,所以表/列名可能有错误。如果这没有帮助,我可以更准确地说,如果您共享您的模式和示例数据。

问题在于您的查询的以下部分

(select distinct year(TransactionDateTime) from quotations)

您需要在in子句中提供一个静态年份列表。

问题在于查询的以下部分

(select distinct year(TransactionDateTime) from quotations)

您需要在in子句中提供一个静态的年份列表。

query对我来说似乎没问题,我认为pivot是一个保留字,所以最好使用其他别名或至少添加括号:因为[pivot]query对我来说没问题,我认为pivot是一个保留字,所以最好使用其他别名或至少添加括号:因为[pivot]我在您的解决方案中的“从报价单”之后添加了一行“按左分组(datename(month,TransactionDateTime),3),年(TransactionDateTime)”,它成功了!thanksI在您的解决方案中的“报价单”之后添加了一行“group by left(datename(month,TransactionDateTime),3),year(TransactionDateTime)”,它成功了!谢谢
DECLARE @cols AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(year(TransactionDateTime))
            FROM Quotations
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

SET @query = 
    'SELECT *
    FROM (
        SELECT 
            left(datename(month,TransactionDateTime),3) as [month], year(TransactionDateTime) as [year],
            count(*) as Total 
        FROM quotations
    ) as s
    PIVOT
    (
        SUM(Total)
        FOR [year] IN (' + @cols + ')
    ) AS pivot'

EXECUTE(@query)
(select distinct year(TransactionDateTime) from quotations)