使用SSMS / SQL Server 2008 R2。
我有以下SQL脚本,它使用两个CTE和一个PIVOT语句
DECLARE @WEEK_START_SUBTRACTER INT;
SET @WEEK_START_SUBTRACTER = 34;
-- CTE1 SChedule History (FORECASTS) and Date Dimension
WITH ctevh
AS
(
SELECT
dd.WeekOfYear - @WEEK_START_SUBTRACTER AS PlanningWeekNo
,sh.FORECAST_CALLS
,sh.CT_NAME
,CONVERT(varchar(10),sh.SCHED_DATE,120) AS SCHED_DATE
FROM dbo.DateDimension dd
INNER JOIN Planning.ScheduleHistory sh
ON dd.Date = sh.EXTRACT_DATE
)
--CTE 2 VirtualQueues (ACTUALS) and Business Areas
, ctevq
AS
(
SELECT vq.StartDate
,ba.IEXDescription
,SUM(vq.Offered) AS Offered
FROM Planning.VirtualQueues vq
INNER JOIN
Planning.BusinessAreas ba
ON vq.VirtualQueue = ba.VirtualQueue
GROUP BY ba.IEXDescription, vq.StartDate
HAVING ba.IEXDescription = 'Personal'
OR
ba.IEXDescription = 'Corporate'
OR
ba.IEXDescription = 'Company'
)
-- Join the two CTEs
SELECT *
FROM ctevh
LEFT OUTER JOIN ctevq
ON ctevh.CT_NAME = ctevq.IEXDescription
AND
ctevh.SCHED_DATE = ctevq.StartDate
PIVOT (
MAX(ctevh.FORECAST_CALLS)
FOR PlanningWeekNo in ([1],[2],[3],[4])
) AS pvt
我得到以下错误,我认为这是由PIVOT部分引起的:
执行批处理时发生错误。错误消息是:索引超出了数组的范围。
如果我用实际的(精确的)VIEW替换CTE2'ctevq',那么脚本运行正常。
我在网上搜索过,整体解决方案似乎是升级您的SSMS / SQL Server。这些都不是一个选项