繁体   English   中英

如何修复突触中如下所示的动态 sql 查询语法错误?

[英]How to fix dynamic sql query syntax error that shown in below in synapse?

IF OBJECT_ID('temp..#temp') IS NOT NULL
BEGIN
    DROP TABLE #temp
END
GO

CREATE TABLE #temp
(
    [CxID] int,
    [CompanyID] int,
    [Category] int -- this category column is created by ROW_NUMBER function over partition by [CxID] order by [CxID] and [CompanyID]
)

INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('1', '101', '1');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('1', '102', '2');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('1', '103', '3');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('2', '201', '1');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('3', '301', '1');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('4', '401', '1');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('5', '501', '1');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('5', '502', '2');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('5', '503', '3');
INSERT INTO #temp ([CxID], [CompanyID], [Number]) VALUES ('5', '504', '4');
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = (SELECT STRING_AGG(category,',') FROM (SELECT DISTINCT category FROM #temp WHERE category IS NOT NULL)t);

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select CxID
                    , CompanyID
                    , category
                from #temp
           ) x
            pivot 
            (
                 max(CompanyID)
                for category in (' + @cols + ')
            ) p ';

execute(@query);

错误消息:第 11 行,第 34 列的解析错误:“1”附近的语法不正确。

问题:我们不知道客户在历史数据中可以拥有的CompanyID的最大数量,并且想要output如下:

CxID 公司ID1 公司ID2 公司ID3 ... 公司 IDx
1 101 102 103 ... (无效的)
2 201 (无效的) (无效的) ... (无效的)
3 301 (无效的) (无效的) ... (无效的)
4 401 (无效的) (无效的) ... (无效的)
5 501 502 503 ... ...

我认为您应该尽量避免将数字作为列,因为 pivot 对它们不好。

但是如果你想那么你必须改变 sql 所以它变成这样:

SELECT [1],[2],[3],[4] from 

代替

SELECT 1,2,3,4 from 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM