回答編集履歴
4
コード微修正
test
CHANGED
@@ -52,9 +52,9 @@
|
|
52
52
|
|
53
53
|
SELECT
|
54
54
|
|
55
|
-
MAX(商品1) AS 商品1
|
55
|
+
MAX(T.商品1) AS 商品1
|
56
56
|
|
57
|
-
, MAX(商品2) AS 商品2
|
57
|
+
, MAX(T.商品2) AS 商品2
|
58
58
|
|
59
59
|
FROM
|
60
60
|
|
@@ -98,7 +98,7 @@
|
|
98
98
|
|
99
99
|
GROUP BY
|
100
100
|
|
101
|
-
DUMMY
|
101
|
+
T.DUMMY
|
102
102
|
|
103
103
|
```
|
104
104
|
|
3
コードミス修正
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
MAX(商品1) AS 商品1
|
56
56
|
|
57
|
-
, MAX(商品
|
57
|
+
, MAX(商品2) AS 商品2
|
58
58
|
|
59
59
|
FROM
|
60
60
|
|
2
誤爆修正
test
CHANGED
@@ -42,11 +42,73 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
+
1レコードで取りたいとのことを見逃してました。
|
46
|
+
|
47
|
+
DBMSの記載がないのでベンダ依存しないもので書いてるとかんり不恰好に・・・
|
48
|
+
|
49
|
+
もっと簡単にかけそうな気はする・・・
|
50
|
+
|
51
|
+
```SQL
|
52
|
+
|
53
|
+
SELECT
|
54
|
+
|
55
|
+
MAX(商品1) AS 商品1
|
56
|
+
|
57
|
+
, MAX(商品1) AS 商品2
|
58
|
+
|
59
|
+
FROM
|
60
|
+
|
61
|
+
(
|
62
|
+
|
63
|
+
SELECT
|
64
|
+
|
65
|
+
1 AS DUMMY
|
66
|
+
|
67
|
+
, (CASE WHEN T1.日付 = T2.最大日付 THEN T1.商品 ELSE NULL END) AS 商品1
|
68
|
+
|
69
|
+
, (CASE WHEN T1.日付 = T2.最小日付 THEN T1.商品 ELSE NULL END) AS 商品2
|
70
|
+
|
71
|
+
FROM
|
72
|
+
|
73
|
+
SAMPLE_TABLE T1
|
74
|
+
|
75
|
+
INNER JOIN
|
76
|
+
|
77
|
+
(
|
78
|
+
|
79
|
+
SELECT
|
80
|
+
|
81
|
+
MAX(日付) AS 最大日付
|
82
|
+
|
83
|
+
, MIN(日付) AS 最小日付
|
84
|
+
|
85
|
+
FROM
|
86
|
+
|
87
|
+
SAMPLE_TABLE
|
88
|
+
|
89
|
+
WHERE
|
90
|
+
|
91
|
+
T.日付 BETWEEN '0113' AND '0119'
|
92
|
+
|
93
|
+
) T2
|
94
|
+
|
95
|
+
ON T1.日付 IN (T2.最大日付, T2.最小日付)
|
96
|
+
|
97
|
+
) T
|
98
|
+
|
99
|
+
GROUP BY
|
100
|
+
|
101
|
+
DUMMY
|
102
|
+
|
103
|
+
```
|
104
|
+
|
105
|
+
|
106
|
+
|
45
107
|
---
|
46
108
|
|
47
109
|
**補足**
|
48
110
|
|
49
|
-
|
111
|
+
コード例を書いては見ましたが、
|
50
112
|
|
51
113
|
SQLのコーディング力は思考錯誤しないと身につかないので、
|
52
114
|
|
1
追記
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
ぱっと思いつくクエリは以下です。
|
6
6
|
|
7
|
-
|
7
|
+
(※動作は見てないので動く保証はないです)
|
8
8
|
|
9
9
|
```SQL
|
10
10
|
|
@@ -39,3 +39,27 @@
|
|
39
39
|
ON T1.日付 IN (T2.最大日付, T2.最小日付)
|
40
40
|
|
41
41
|
```
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
**補足**
|
48
|
+
|
49
|
+
ただ反射的にはコード例を書いては見ましたが、
|
50
|
+
|
51
|
+
SQLのコーディング力は思考錯誤しないと身につかないので、
|
52
|
+
|
53
|
+
こういうパターンの場合はやりたいことを段階的に行えばよいかと思います。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
0. 該当する日付期間で絞り込む(「SQL 範囲指定」で検索して色々な例を見てみて下さい)
|
58
|
+
|
59
|
+
0. あるデータの最大値、最小値を取得する(「SQL 最大 最小」で検索して色々な例を見てみて下さい)
|
60
|
+
|
61
|
+
0. 取得した最大値または最小値に該当するデータを取得する(「sql or 複数」で検索して色々な例を見てみて下さい)
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
1つ1つの課題するSQLを書けたら、後は組み合わせるだけです。
|