Я хочу, чтобы sp использовал условный параметр, такой как
CREATE PROCEDURE spTest
(
@param1 DATE,
@param2 DATE,
@param3 NVARCHAR(8) = null
)
AS
IF (@param3 = 'test1')
BEGIN
SELECT a, SUM(b) AS SumOfB, SUM(c) AS SumOfC FROM db1 GROUP BY a
END
WITH innerQuery1 AS
(
SELECT a, b, c FROM db2 WHERE a >=@param1 AND a <= @param2
)
SELECT a, SUM(b) AS SumOfB, SUM(c) AS SumOfC FROM innerQuery1 GROUP BY a
Я знаю, что это очень обобщенно, но этот процесс работает.То, что я пытаюсь сделать, - это поставить условное «посередине», например.
CREATE PROCEDURE spTest
(
@param1 DATE,
@param2 DATE,
@param3 NVARCHAR(8) = null
)
AS
WITH innerQuery1 AS
(
SELECT a, b, c FROM db2 WHERE a >=@param1 AND a <= @param2
)
IF (@param3 = 'test1')
BEGIN
SELECT a, SUM(b) AS SumOfB, SUM(c) AS SumOfC FROM db1 GROUP BY a
END
SELECT a, SUM(b) AS SumOfB, SUM(c) AS SumOfC FROM innerQuery1 GROUP BY a
То, что происходит, теперь он больше не может видеть innerQuery1.Разве у вас нет условного выражения в WITH?
Есть идеи, почему оно не работает?Мой фактический запрос намного длиннее и больше вложенных запросов.В основном, в этом случае мы пытаемся использовать только один sp и использовать результаты запросов на основе параметра.
Спасибо,