sql查询代码不动态运行
我想要在动态表中具有顶部周期YYYYMM的透视表布局。 显示每月的消费总额显示1年。 但是当我试着把数据(周期(201801201802…)放在动态上时,周期表不工作 我不知道我在报告上是否做错了什么……有人能帮忙吗 查询没有处于动态和工作状态,但当我尝试更改为动态时,无法使其工作sql查询代码不动态运行,sql,database,sql-server-2008-r2,ssms,Sql,Database,Sql Server 2008 R2,Ssms,我想要在动态表中具有顶部周期YYYYMM的透视表布局。 显示每月的消费总额显示1年。 但是当我试着把数据(周期(201801201802…)放在动态上时,周期表不工作 我不知道我在报告上是否做错了什么……有人能帮忙吗 查询没有处于动态和工作状态,但当我尝试更改为动态时,无法使其工作 DECLARE @ColumnNames NVARCHAR(MAX) = ' ' DECLARE @SQL NVARCHAR (MAX) = ' ' SELECT @ColumnNames += QUOTENAM
DECLARE @ColumnNames NVARCHAR(MAX) = ' '
DECLARE @SQL NVARCHAR (MAX) = ' '
SELECT @ColumnNames += QUOTENAME(Period) + ','
FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
SET @ColumnNames = LEFT (@ColumnNames,LEN(@ColumnNames)-1)
SET @SQL =
SELECT [No_] ,[Group],[Lakeview],[Name],[class.],[Stock], [Period]
FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
PIVOT (
SUM ([Qty])
FOR [Period]
IN( ' + @ColumnNames + ')
)
as pivortable
您正在执行2个需要动态语法的查询-我还没有测试过,但我认为您可以尝试以下方法:
--Declare Variables
DECLARE @ColumnNames NVARCHAR(MAX) = NULL
DECLARE @SQL NVARCHAR(MAX)
-- First dynamic query
SET @SQL = N'
SELECT @ColumnNames += QUOTENAME(Period) + '',''
FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year] ;';
--Execute dynamic query
EXEC sp_executesql @sql, N'@ColumnNames NVARCHAR(MAX)', @ColumnNames;
SET @ColumnNames = LEFT (@ColumnNames,LEN(@ColumnNames)-1)
--second dynamic query
SET @SQL = N'
SELECT [No_] ,[Group],[Lakeview],[Name],[class.],[Stock], [Period]
FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
PIVOT (
SUM ([Qty])
FOR [Period]
IN( ' + @ColumnNames + ')
)
AS PivotTable ;';
EXEC sp_executesql @sql, N'@ColumnNames NVARCHAR(MAX) OUT', @ColumnNames OUT;
SELECT @TransType
编辑
在过去的
EXEC
中添加了OUT
以识别它们是输出变量,因此您可以使用SELECT@TransType
获得结果动态SQL使用字符串中定义的SQL上的EXEC sp_executesql
。我不确定你的代码应该做什么。我希望报告显示如下:| item | group | name | Stock | 201804 | 201803 | 201802 | 201801 |……(期间应该是dynamici运行查询并成功运行,但不显示任何数据,只显示“Command(s)completed successfully.”嗯,我想知道您的第一个查询是否会返回任何列,您可以尝试并自行执行第一部分,以查看-如果没有返回任何内容,那么您需要了解如何将列转换为列表,以便在in子句中使用,
,这可能会使您的方向正确-选择*FROM(选择句点;[No],[Group],[Lakeview],[Name],[class.],[STOKVIS LIVE],[dbo],[SR_CONS_consumption 1year])中[Period]的枢轴(总和([Qty])([201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201805],[201,[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、[201805]、)如pivortable@Justin所示,当我运行时,仅显示1个月的报告重复收集每个项目的年份