3

次の SQL ステートメントがあります (SQL Server を対象としています)。

INSERT INTO t1 (c1, c2) 
VALUES (1, CASE WHEN (SELECT MAX(c2) FROM t1 AS maxV) IS NOT NULL THEN maxV+1 ELSE 1 END);

エラーが表示されます:「列名 'maxV' が無効です」

なんで?

4

3 に答える 3

4

使用してみてくださいCOALESCE

INSERT INTO t1 (c1, c2) 
SELECT 1, COALESCE(MAX(c2), 0) + 1
FROM t1
于 2011-11-12T08:20:06.157 に答える
1

それを行う別の方法...

INSERT INTO t1 (c1, c2) 
VALUES (1, ISNULL(SELECT MAX(c2) FROM t1, 0)+1);
于 2011-11-12T08:21:45.443 に答える
1

これを試して...

INSERT INTO t1 (c1, c2) 
VALUES (
    1, 
    CASE 
        WHEN (SELECT MAX(c2) FROM t1) IS NOT NULL 
        THEN (SELECT MAX(c2)+1 FROM t1)
        ELSE 1 
    END);
于 2011-11-12T08:18:03.527 に答える