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

を使用する必要がありますif-else。marc_sが言っcaseたように、と同じswitchではなく、制御フローには使用されません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

これを 1 つのステートメントとして実行したい場合は、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')

私はそれをお勧めしませんが。

于 2013-11-08T17:30:59.453 に答える
1

それは有効な TSQL ではありません。これは代わりに機能する可能性があります:

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 に答える