質問編集履歴

1

コピペミスでUPDATE文のSETを複数個書いてたので修正しました。本文に記載の通り、SQLServer,PostgreSQLでは正しく動くことを確認済みです。

2018/08/02 08:22

投稿

ry188472
ry188472

スコア74

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
- , SET Col2 = (SELECT C FROM V2 )
31
+ , Col2 = (SELECT C FROM V2 )
30
32
 
31
- , SET Col3 = (SELECT B FROM V1 )
33
+ , Col3 = (SELECT B FROM V1 )
32
34
 
33
- , SET Col4 = (SELECT D FROM V2 )
35
+ , Col4 = (SELECT D FROM V2 )
34
36
 
35
37
  ```
36
38