请帮帮我。
我正在尝试根据条件插入表单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
声明有什么问题? 这甚至可能吗? 感谢。
答案 0 :(得分: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
如果您想将此作为一个声明,那么我可以相信使用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')
虽然我不推荐它。
答案 1 :(得分: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