【问题标题】:T-SQL DYNAMIC PIVOT TABLE wont executeT-SQL DYNAMIC PIVOT TABLE 不会执行
【发布时间】:2015-11-10 02:43:11
【问题描述】:
DECLARE @FirstDayOfWeek DATETIME

SELECT @FirstDayOfWeek = 
  COALESCE(
cast(@FirstDayOfWeek AS VARCHAR(MAX)) + ',[' + cast(@FirstDayOfWeek AS VARCHAR(MAX)) + ']',
'[' + cast(@FirstDayOfWeek AS VARCHAR(MAX))+ ']'
  )
FROM [Calendar] c
        LEFT JOIN Stores s ON c.FirstDayOfMonth = s.Validfrom
        left join POSProductDivPeriod pos ON c.Period = pos.Period

DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
  SELECT *
 FROM (
SELECT
  YEAR(FirstDayOfWeek) [Year],
  @FirstDayOfWeek,
 pos.quantity
FROM [Calendar] c
  LEFT JOIN Stores s ON c.FirstDayOfMonth = s.Validfrom
        left join POSProductDivPeriod pos ON c.Period = pos.Period
  ) AS PivotData
  PIVOT (
SUM(pos.quantity)
FOR @FirstDayOfWeek IN (
  ' +CAST(@FirstDayOfWeek AS VARCHAR(MAX)) + '
)
  ) AS PivotTable
'

EXECUTE(@PivotTableSQL)

当我运行所有这些时,我得到命令完成 当我运行执行时,我必须声明 Scarlar 我试图为我的数据透视表运行我的代码,并在

之后立即执行

有什么想法吗?

【问题讨论】:

  • 问题很明显,您正在尝试在动态 sql 中使用变量 @FirstDayOfWeek,动态 sql 有自己的范围,并且在其范围之外声明的任何变量对动态 sql 都不可见。 @FirstDayOfWeek 需要连接到动态sql。
  • 当您执行 PRINT @PivotTableSQL 时它会说什么?

标签: sql-server dynamic pivot-table


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多