T_SQL 多部分标识符无法绑定错误
T_SQL The multi part identifier could not be bound error
我有一个查询工作正常,但我正在尝试从中创建一个动态枢轴以获得更好的最终结果 table。
我在 SO 上找到了这个,但我无法将它与我的问题联系起来。
The multi-part identifier could not be bound
我的工作代码是这样的:
DECLARE @RangeDate as date
set @RangeDate = (select distinct cd.weDate from CM_DATA cd where cd.year = 2015 and cd.week = 45)
set @RangeDate = DATEADD(WW, -7, @RangeDate)
DECLARE @SQL as VARCHAR(MAX)
DECLARE @Columns AS VARCHAR(MAX)
SELECT @Columns =
COALESCE(@Columns + ', ','') + QUOTENAME(YearWeek)
FROM
(
SELECT DISTINCT YearWeek
FROM CM_DATA
where weDate >= @RangeDate
) AS B
SET @SQL = '
WITH PivotData AS
(
select cd.Country
, cd.Chain
, cd.YearWeek
, left(sm.Planogram, 2) as planogram
, cd.StoreNo
, cd.UID
, cd.ShortCode
, lp.Family
, lp.ColourShort
, pr.type
, cd.Volume
, ul.WOSOR
from vw_V2_UsrVarLst ul
left join CM_DATA cd on cd.Country = ul.CountryCode and cd.Chain = ul.Chain
left join V2_StoreMaster sm on sm.CountryCode = ul.CountryCode and sm.Chain = ul.Chain and sm.StoreNo = cd.StoreNo and sm.StoreNm = cd.StoreNm and cd.YearWeek between sm.YYYYWW and sm.YYYYWWEND
left join tblProducts pr ON pr.[COUNTRY CODE] = ul.CountryCode and pr.SKU = cd.UID
left join V2_LanguagePack LP ON LP.ShortCode = cd.ShortCode AND lp.Lang = ul.UsrLang
where cd.Country = ul.CountryCode and cd.Chain = ul.Chain and planogram is not null and left(cd.UID, 10) in (select lv.UID from V2_live lv where lv.CountryCode = ul.CountryCode and lv.Chain = ul.Chain and cd.YearWeek between lv.YYYYWW and lv.YYYYWWEND) and cd.weDate >= ' + @RangeDate + ' and sm.Planogram != ''Z''
)
select cd.Country
, cd.Chain
, left(sm.Planogram, 2) as planogram
, cd.StoreNo
, cd.UID
, cd.ShortCode
, lp.Family
, lp.ColourShort
, pr.type
, cd.Volume
, ' + @Columns + '
, ul.WOSOR
FROM PivotData
PIVOT
(
SUM(Volume)
FOR YearWeek
IN(' + @Columns + ')
) AS PivotResult'
EXEC (@SQL)
谁能看出这里是什么
韩国
马丁
尝试 SELECT @SQL
而不是 EXEC
。
您可能必须将输出设置为文本并使用 query options
(右键单击查询 window)将文本输出的最大长度设置为更高的值(最大值为 8192) .
您可以将动态 SQL 的结果粘贴到新查询 window 中并在那里执行。您应该会收到一条语音错误消息,您甚至应该双击跳转到正确的位置...
祝你好运!
我有一个查询工作正常,但我正在尝试从中创建一个动态枢轴以获得更好的最终结果 table。
我在 SO 上找到了这个,但我无法将它与我的问题联系起来。 The multi-part identifier could not be bound
我的工作代码是这样的:
DECLARE @RangeDate as date
set @RangeDate = (select distinct cd.weDate from CM_DATA cd where cd.year = 2015 and cd.week = 45)
set @RangeDate = DATEADD(WW, -7, @RangeDate)
DECLARE @SQL as VARCHAR(MAX)
DECLARE @Columns AS VARCHAR(MAX)
SELECT @Columns =
COALESCE(@Columns + ', ','') + QUOTENAME(YearWeek)
FROM
(
SELECT DISTINCT YearWeek
FROM CM_DATA
where weDate >= @RangeDate
) AS B
SET @SQL = '
WITH PivotData AS
(
select cd.Country
, cd.Chain
, cd.YearWeek
, left(sm.Planogram, 2) as planogram
, cd.StoreNo
, cd.UID
, cd.ShortCode
, lp.Family
, lp.ColourShort
, pr.type
, cd.Volume
, ul.WOSOR
from vw_V2_UsrVarLst ul
left join CM_DATA cd on cd.Country = ul.CountryCode and cd.Chain = ul.Chain
left join V2_StoreMaster sm on sm.CountryCode = ul.CountryCode and sm.Chain = ul.Chain and sm.StoreNo = cd.StoreNo and sm.StoreNm = cd.StoreNm and cd.YearWeek between sm.YYYYWW and sm.YYYYWWEND
left join tblProducts pr ON pr.[COUNTRY CODE] = ul.CountryCode and pr.SKU = cd.UID
left join V2_LanguagePack LP ON LP.ShortCode = cd.ShortCode AND lp.Lang = ul.UsrLang
where cd.Country = ul.CountryCode and cd.Chain = ul.Chain and planogram is not null and left(cd.UID, 10) in (select lv.UID from V2_live lv where lv.CountryCode = ul.CountryCode and lv.Chain = ul.Chain and cd.YearWeek between lv.YYYYWW and lv.YYYYWWEND) and cd.weDate >= ' + @RangeDate + ' and sm.Planogram != ''Z''
)
select cd.Country
, cd.Chain
, left(sm.Planogram, 2) as planogram
, cd.StoreNo
, cd.UID
, cd.ShortCode
, lp.Family
, lp.ColourShort
, pr.type
, cd.Volume
, ' + @Columns + '
, ul.WOSOR
FROM PivotData
PIVOT
(
SUM(Volume)
FOR YearWeek
IN(' + @Columns + ')
) AS PivotResult'
EXEC (@SQL)
谁能看出这里是什么
韩国 马丁
尝试 SELECT @SQL
而不是 EXEC
。
您可能必须将输出设置为文本并使用 query options
(右键单击查询 window)将文本输出的最大长度设置为更高的值(最大值为 8192) .
您可以将动态 SQL 的结果粘贴到新查询 window 中并在那里执行。您应该会收到一条语音错误消息,您甚至应该双击跳转到正确的位置...
祝你好运!