我试图在INSERT INTO语句之后有一个IF块,并根据某些条件,执行一个不同的SELECT,它将提供INSERT INTO。
这是我尝试做的一个(失败的)示例:
INSERT INTO #TempTable (COL1, COL2, COL3)
IF @VAR = 'YES'
BEGIN
SELECT * FROM TABLE
END
ELSE
BEGIN
SELECT * FROM TABLE WHERE REGDATE <= '2015-06-12'
END
但是当我试图保存存储过程时,我总是这样做。
Incorrect syntax near the keyword 'IF'
我想构建一个字符串并使用sp_executesql
,但我认为我的初始方法不容易出错。
答案 0 :(得分:1)
它不起作用。但这是
INSERT INTO #TempTable (COL1, COL2, COL3)
SELECT * FROM TABLE
WHERE @VAR = 'YES' OR REGDATE <= '2015-06-12'
答案 1 :(得分:1)
另一种选择是使用CASE
语句或IF
语句。也许这个?它非常接近你所拥有的:
CREATE TABLE TABLE1 (a INT, b INT, c INT);
CREATE TABLE TABLE2 (a INT, b INT, c INT);
CREATE TABLE TABLE3 (a INT, b INT, c INT);
INSERT INTO TABLE2 VALUES(1,2,3);
INSERT INTO TABLE3 VALUES(4,5,6);
DECLARE @VAR VARCHAR(MAX) = 'YES'
IF @VAR = 'YES'
BEGIN
INSERT INTO TABLE1
SELECT * FROM TABLE2
END
ELSE
BEGIN
INSERT INTO TABLE1
SELECT * FROM TABLE3
END