Sql server 如何在我的SQL dynamic Pivot查询中为这行代码编写正确的语法?
我在SQL Server 2014上运行了一个动态pivot查询。这是我的原始查询,运行良好:Sql server 如何在我的SQL dynamic Pivot查询中为这行代码编写正确的语法?,sql-server,dynamic,syntax,pivot,Sql Server,Dynamic,Syntax,Pivot,我在SQL Server 2014上运行了一个动态pivot查询。这是我的原始查询,运行良好: DECLARE @sql NVARCHAR(max), @cols VARCHAR(max) SET @cols = (SELECT DISTINCT a.FOC_TRANSACTIONCODE + ',' FROM P5FOLIOCHARGE a LEFT JOIN P5FOLIOHEADER b
DECLARE @sql NVARCHAR(max),
@cols VARCHAR(max)
SET @cols = (SELECT DISTINCT a.FOC_TRANSACTIONCODE + ','
FROM P5FOLIOCHARGE a
LEFT JOIN P5FOLIOHEADER b
ON a.FOC_ACCOUNT = b.FOH_ACCOUNT
WHERE b.FOH_PMSCONFIRMATIONNUMBER = '39576189-1'
AND FOC_NETAMOUNT NOT LIKE '-%'
FOR xml path(''))
SELECT @cols = LEFT(@cols, Len(@cols) - 1)
SET @sql = 'SELECT *
FROM (SELECT b.FOH_PMSCONFIRMATIONNUMBER,
a.FOC_ACCOUNT,
a.FOC_PROPERTY,
a.FOC_DATE,
a.FOC_TRANSACTIONCODE,
CASE WHEN a.FOC_NETAMOUNT > 0 THEN a.FOC_NETAMOUNT ELSE 0 END AS FOC_NETAMOUNT
FROM P5FOLIOCHARGE a
LEFT JOIN P5FOLIOHEADER b ON a.FOC_ACCOUNT = b.FOH_ACCOUNT
where b.FOH_PMSCONFIRMATIONNUMBER = ''39576189-1''
AND FOC_NETAMOUNT NOT LIKE ''-%'')a
PIVOT (Sum(FOC_NETAMOUNT)
FOR FOC_TRANSACTIONCODE IN (' + @cols + ')) pv '
EXEC Sp_executesql @sql
我现在对它进行了一些修改,但我在添加以下代码时遇到了语法错误:
WHERE datename(m,FOC_DATE) + ' ' + cast(datepart(yyyy,FOC_DATE) as varchar) = 'FEBRUARY 2015'
查询现在如下所示:
DECLARE @sql NVARCHAR(max),
@cols VARCHAR(max)
SET @cols = (SELECT DISTINCT a.FOC_TRANSACTIONCODE + ','
FROM P5FOLIOCHARGE a
LEFT JOIN P5FOLIOHEADER b
ON a.FOC_ACCOUNT = b.FOH_ACCOUNT
WHERE datename(m,FOC_DATE) + ' ' + cast(datepart(yyyy,FOC_DATE) as varchar) = 'FEBRUARY 2015'
AND FOC_PROPERTY = 'ZIL'
AND FOC_NETAMOUNT NOT LIKE '-%'
FOR xml path(''))
SELECT @cols = LEFT(@cols, Len(@cols) - 1)
SET @sql = 'SELECT *
FROM (SELECT b.FOH_PMSCONFIRMATIONNUMBER,
a.FOC_ACCOUNT,
a.FOC_date,
a.FOC_PROPERTY,
a.FOC_TRANSACTIONCODE,
CASE WHEN a.FOC_NETAMOUNT > 0 THEN a.FOC_NETAMOUNT ELSE 0 END AS FOC_NETAMOUNT
FROM P5FOLIOCHARGE a
LEFT JOIN P5FOLIOHEADER b ON a.FOC_ACCOUNT = b.FOH_ACCOUNT
WHERE datename(m,FOC_DATE) + ' ' + cast(datepart(yyyy,FOC_DATE) as varchar) = ''FEBRUARY 2015''
AND FOC_PROPERTY = 'ZIL'
AND FOC_NETAMOUNT NOT LIKE ''-%'')a
PIVOT (Sum(FOC_NETAMOUNT)
FOR FOC_TRANSACTIONCODE IN (' + @cols + ')) pv '
EXEC Sp_executesql @sql
我在上面提到的代码中有一个语法错误,它第二次出现在查询中,也就是在SET@sql=..之后
我试过几种组合使用‘符号’,但还是失败了。我想这一定是一个简单的编码语法错误,但它只是不适合我 我不确定,但请检查一下 其中datenamem,FOC_DATE+“”+castdatepartyyyy,FOC_DATE为varchar=2015年2月,应为datenamem,FOC_DATE++castdatepartyyyy,FOC_DATE为varchar=2015年2月 FOC_属性='ZIL'应该是,FOC_属性=ZIL
谢谢工作起来很有魅力!