回答編集履歴

4

推敲

2020/09/19 13:23

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -84,6 +84,6 @@
84
84
 
85
85
  and id=(select min(id) from テーブル1 where 商品ID=t.商品ID)
86
86
 
87
- ORDER BY 商品ID, Ord, 数量
87
+ ORDER BY 商品ID, Ord, ID
88
88
 
89
89
  ```

3

追記

2020/09/19 13:23

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -41,3 +41,49 @@
41
41
  ORDER BY 商品ID, Ord, 数量
42
42
 
43
43
  ```
44
+
45
+ 追記
46
+
47
+ --
48
+
49
+ 追加するオートナンバーを`ID`とすると、**相関副問合せ**で商品ID毎の最小のIDを求めます。
50
+
51
+ ```SQL
52
+
53
+ SELECT 商品ID, 商品名, 商品価格 AS 商品単価, 1 As Ord, 数量
54
+
55
+ FROM テーブル1
56
+
57
+ UNION ALL
58
+
59
+ SELECT 商品ID, '手数料', 手数料, 2, 1
60
+
61
+ FROM テーブル1 t
62
+
63
+ WHERE 手数料<>'0'
64
+
65
+ and id=(select min(id) from テーブル1 where 商品ID=t.商品ID)
66
+
67
+ UNION ALL
68
+
69
+ SELECT 商品ID, '送料', 送料, 3, 1
70
+
71
+ FROM テーブル1 t
72
+
73
+ WHERE 送料<>'0'
74
+
75
+ and id=(select min(id) from テーブル1 where 商品ID=t.商品ID)
76
+
77
+ UNION ALL
78
+
79
+ SELECT 商品ID, '値引き', 値引き, 4, 1
80
+
81
+ FROM テーブル1 t
82
+
83
+ WHERE 値引き<>'0'
84
+
85
+ and id=(select min(id) from テーブル1 where 商品ID=t.商品ID)
86
+
87
+ ORDER BY 商品ID, Ord, 数量
88
+
89
+ ```

2

推敲

2020/09/19 13:17

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -1,4 +1,6 @@
1
- 横を縦にする場合、その項目ごとにunion して下さい。順番も必要でしょうし。
1
+ 横を縦にする場合、その項目ごとにunion して下さい。
2
+
3
+ 手数料、送料、値引き全てがある場合には、順番も必要でしょうし。
2
4
 
3
5
  ```SQL
4
6
 

1

質問が変更になったので

2020/09/18 07:22

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -1,21 +1,41 @@
1
- 手数料分ついてgroup byすれば良と思います
1
+ 横を縦する場合、その項目ごとにunion して下さい。順番も必要でしょうし。
2
2
 
3
3
  ```SQL
4
4
 
5
- SELECT 商品ID, 商品名, 商品価格 AS 商品単価, 1 As Ord
5
+ SELECT 商品ID, 商品名, 商品価格 AS 商品単価, 1 As Ord, 数量
6
6
 
7
- FROM テーブル1
7
+ FROM テーブル1
8
8
 
9
- UNION ALL
9
+ UNION ALL
10
10
 
11
- SELECT 商品ID, "送", max(商品価格), 2
11
+ SELECT 商品ID, '手数', min(手数料), 2, 1
12
12
 
13
- FROM テーブル1
13
+ FROM テーブル1
14
14
 
15
- WHERE 手数料 > 0
15
+ WHERE 手数料<>'0'
16
16
 
17
- group by 商品ID
17
+ GROUP BY 商品ID
18
18
 
19
+ UNION ALL
20
+
21
+ SELECT 商品ID, '送料', min(送料), 3, 1
22
+
23
+ FROM テーブル1
24
+
25
+ WHERE 送料<>'0'
26
+
27
+ GROUP BY 商品ID
28
+
29
+ UNION ALL
30
+
31
+ SELECT 商品ID, '値引き', min(値引き), 4, 1
32
+
33
+ FROM テーブル1
34
+
35
+ WHERE 値引き<>'0'
36
+
37
+ GROUP BY 商品ID
38
+
19
- ORDER BY 商品ID, Ord;
39
+ ORDER BY 商品ID, Ord, 数量
20
40
 
21
41
  ```