У меня следующий запрос, который принимает 2 параметра.
- YearNumber
- MonthNumber
В своем сводном запросе я пытаюсь выбрать столбцы на основепеременная @Year_Rtl
.Мне нужно выбрать данные за прошедший год, прошлый год и последний прошлый год.Поскольку данные, отображаемые в пользовательском интерфейсе, имеют формат таблицы, разделенный на @Year_Rtl
, я решил написать сводный запрос для этого, как показано ниже.
В запросе все работает нормально, если я жестко кодирую [@Year_Rtl], [@Year_Rtl - 1], [@Year_Rtl - 2]
to [2012], [2011], [2010]
.Но поскольку прошедший год может быть любым, я хочу, чтобы столбцы назывались динамически.
DECLARE @Month_Rtl int
DECLARE @Year_Rtl int
SET @Year_Rtl = 2012
SET @Month_Rtl = 1
SELECT
'Data 1', [@Year_Rtl], [@Year_Rtl - 1], [@Year_Rtl - 2]
FROM
(SELECT [Yr_No], Qty
FROM dbo.Table1 t
WHERE (t.Col1 = 10) AND
(t.Col2 = '673') AND
((t.Mth_No = @Month_Rtl AND t.Yr_No = @Year_Rtl) OR
(t.Mth_No = 12 AND t.Yr_No IN (@Year_Rtl - 1, @Year_Rtl - 2)))
) p PIVOT (SUM(Qty)
FOR [Yr_No] IN ([@Year_Rtl], [@Year_Rtl-1], [@Year_Rtl-2])
) AS pvt
Выше запроса выдает следующие ошибки:
Ошибка преобразования типа данных nvarchar в smallint.
В операторе PIVOT указано неверное значение "@Year_Rtl".
Неверное имя столбца '@Year_Rtl - 1'.
Неверное имя столбца '@Year_Rtl - 2'.