次の 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' が無効です」
なんで?
次の 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' が無効です」
なんで?
使用してみてくださいCOALESCE
:
INSERT INTO t1 (c1, c2)
SELECT 1, COALESCE(MAX(c2), 0) + 1
FROM t1
それを行う別の方法...
INSERT INTO t1 (c1, c2)
VALUES (1, ISNULL(SELECT MAX(c2) FROM t1, 0)+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);