0

请帮我。

我正在尝试根据条件插入表格 2 不同的表格并出现错误:

关键字“CASE”附近的语法不正确。

 INSERT INTO Table_1 (col1, col2, col3)
     CASE WHEN @var = 'L' THEN 
        SELECT FROM Table_2 col1, col2, col3
     WHEN @var = 'S' THEN 
        SELECT FROM Table_3 col1, col2, col3
    END 

声明有什么问题?这甚至可能吗?谢谢。

4

2 回答 2

3

You need to use if-else. As marc_s has said case is not the same as switch and is not used for control flow in sql

IF @var='L'
BEGIN
    INSERT INTO tbl ( c1, c2, c3 )
    SELECT c1, c2, c3
    FROM tbla
END
ELSE IF @var='S'
BEGIN
    INSERT INTO tbl ( c1, c2, c3 )
    SELECT c1, c2, c3
    FROM tblb
END

If you'd like to do this as one statement then you could I believe use a UNION ALL

INSERT INTO tbl ( c1, c2, c3 )
SELECT c1, c2, c3
FROM tbla
WHERE (@var='L')
UNION ALL
SELECT c1, c2, c3
FROM tblb
WHERE (@var='S')

Though I wouldn't recommend it.

于 2013-11-08T17:30:59.453 回答
1

That's not valid TSQL. This might work instead:

IF @var = 'L'
BEGIN
    INSERT INTO Table_1 (col1, col2, col3)
    SELECT col1, col2, col3 FROM Table_2 
END

IF @var = 'S'
BEGIN
    INSERT INTO Table_1 (col1, col2, col3)
    SELECT col1, col2, col3 FROM Table_3 
END
于 2013-11-08T17:28:41.993 回答