質問編集履歴
1
コピペミスでUPDATE文のSETを複数個書いてたので修正しました。本文に記載の通り、SQLServer,PostgreSQLでは正しく動くことを確認済みです。
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,13 +6,15 @@
|
|
6
6
|
|
7
7
|
SQLServerとPostgreSQLでは下のSQLでうまく動くのですが、
|
8
8
|
|
9
|
-
Oracle だとwithの構文が違うようでエラー(ORA-00928)が出てしまいます。
|
9
|
+
Oracle だとwithの構文が違うようでエラー(ORA-00928 SELECTキーワードがありません)が出てしまいます。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
13
|
WITH句の中で集計関数なり「あるグループの中で最大値のレコードを絞り込み」等をやっているのでSET句の右辺に長いサブクエリを書きたくないのですが、SQLServer, Oracle, PostgreSQL で同じSQLで短く書く方法はないでしょうか?
|
14
14
|
|
15
15
|
Oracleだけ別のSQLとしないと無理でしょうか?
|
16
|
+
|
17
|
+
|
16
18
|
|
17
19
|
```SQL
|
18
20
|
|
@@ -26,11 +28,11 @@
|
|
26
28
|
|
27
29
|
SET Col1 = (SELECT A FROM V1 )
|
28
30
|
|
29
|
-
,
|
31
|
+
, Col2 = (SELECT C FROM V2 )
|
30
32
|
|
31
|
-
,
|
33
|
+
, Col3 = (SELECT B FROM V1 )
|
32
34
|
|
33
|
-
,
|
35
|
+
, Col4 = (SELECT D FROM V2 )
|
34
36
|
|
35
37
|
```
|
36
38
|
|