teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

修正

2017/04/26 04:16

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  ```sql
4
4
  SELECT
5
- code
5
+ tmp.code
6
- ,name
6
+ ,tmp.name
7
- ,kcode
7
+ ,tmp.kcode
8
- ,kname
8
+ ,tmp.kname
9
- ,shoyou
9
+ ,tmp.shoyou
10
- ,kubun
10
+ ,tmp.kubun
11
11
  FROM (
12
12
  SELECT
13
13
  k1.code code
@@ -26,8 +26,8 @@
26
26
  LEFT JOIN 所要テーブル s1
27
27
  ON k1.code = s1.code
28
28
  AND s1.kubun IN ('J', 'T')
29
- )
29
+ ) tmp
30
- WHERE shoyou = max_shoyou
30
+ WHERE tmp.shoyou = tmp.max_shoyou
31
31
  ```
32
32
 
33
33
  'J' or 'T'は結合条件に指定します。

4

追記

2017/04/26 04:16

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,4 +1,4 @@
1
- 分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。
1
+ 分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。SHOYOUの値が分析関数で求めたCODEとKCODEごとの最大値と等しい行を抽出すればよいです。
2
2
 
3
3
  ```sql
4
4
  SELECT

3

追記

2017/04/25 13:15

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -30,4 +30,6 @@
30
30
  WHERE shoyou = max_shoyou
31
31
  ```
32
32
 
33
+ 'J' or 'T'は結合条件に指定します。
34
+
33
35
  [図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)

2

誤字修正

2017/04/25 13:08

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  ,h2.name kname
17
17
  ,s1.shoyou shoyou
18
18
  ,s1.kubun kubun
19
- ,MAX(s.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou
19
+ ,MAX(s1.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou
20
20
  FROM
21
21
  製品構成テーブル k1
22
22
  LEFT JOIN 品名テーブル h1

1

修正

2017/04/25 13:00

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -30,6 +30,4 @@
30
30
  WHERE shoyou = max_shoyou
31
31
  ```
32
32
 
33
- 「CODEに対するKUBUN は『J』か『T』のみを抽出」は結合条件もしくはWHERE句でフィルタリングします。
34
-
35
33
  [図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)