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

回答編集履歴

5

訂正

2020/05/28 02:31

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -45,4 +45,4 @@
45
45
  となる
46
46
  ```
47
47
  上記で言う所のJANコード「5678」のデータを見て下さい。
48
- 上記の結果になるなら、「数量」値があり「売上」が0のデータがあるはずです。
48
+ 上記の結果になるなら、「数量」値があり「売上」が0のデータがあるはずです。

4

追記

2020/05/28 02:31

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -33,23 +33,16 @@
33
33
  ```
34
34
  追記
35
35
  --
36
- データ調査用のSQLです。
37
- 年度を持たせているのは質問の内容が年度ごとに集計しているからです。
38
- ```SQL
39
- select JANコード, 商品名, 販売価格, count(*) as 件数
40
- from (
41
- SELECT JANコード, 商品名, 販売価格, 年度
42
- from (
43
- select 2000 as 年度, * from [2000年]
44
- union all select 2001, * from [2001年]
45
- union all select 2002, * from [2002年]
46
- union all select 2003, * from [2003年]
47
- union all select 2004, * from [2004年]
48
- ) as marge
49
- GROUP BY JANコード, 商品名, 販売価格, 年度
50
- ) step1
51
- GROUP BY JANコード, 商品名, 販売価格
52
- having count(*)>1
53
36
  ```
37
+ 本来
38
+ フィールド名:JANコード 商品名 販売数 販売価格(税抜) 合計売上(税抜)
39
+ 1234    ○○   10    1000       10000
40
+ 5678    ●●   12    1000       12000
41
+ となった最終データがほしいのに
42
+ フィールド名:JANコード 商品名 販売数 販売価格(税抜) 合計売上(税抜)
43
+ 1234    ○○   10    1000       10000
44
+ 5678    ●●   20    1000       20000
45
+ となる
46
+ ```
54
- 上記でデータが抽出されれば、年度で跨っています
47
+ 上記で言う所のJANコード「5678」のデータを見下さい。
55
- 抽出されければ同様に対象の項目を変えて(例えば年度の代わに商品名とか)行ってみて下さい
48
+ 上記の結果にるなら「数量」値があ「売上」が0のデータがあるはずです

3

追記

2020/05/28 02:31

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -30,4 +30,26 @@
30
30
  union all select 2002, * from [2002年]
31
31
  union all select 2003, * from [2003年]
32
32
  union all select 2004, * from [2004年]
33
- ```
33
+ ```
34
+ 追記
35
+ --
36
+ データ調査用のSQLです。
37
+ 年度を持たせているのは質問の内容が年度ごとに集計しているからです。
38
+ ```SQL
39
+ select JANコード, 商品名, 販売価格, count(*) as 件数
40
+ from (
41
+ SELECT JANコード, 商品名, 販売価格, 年度
42
+ from (
43
+ select 2000 as 年度, * from [2000年]
44
+ union all select 2001, * from [2001年]
45
+ union all select 2002, * from [2002年]
46
+ union all select 2003, * from [2003年]
47
+ union all select 2004, * from [2004年]
48
+ ) as marge
49
+ GROUP BY JANコード, 商品名, 販売価格, 年度
50
+ ) step1
51
+ GROUP BY JANコード, 商品名, 販売価格
52
+ having count(*)>1
53
+ ```
54
+ 上記でデータが抽出されれば、年度で跨っています。
55
+ 抽出されなければ、同様に対象の項目を変えて(例えば年度の代わりに商品名とか)行ってみて下さい。

2

追記

2020/05/28 02:20

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -22,4 +22,12 @@
22
22
  union all select * from [2004年]
23
23
  ) as marge
24
24
  GROUP BY JANコード, 商品名, 販売価格
25
+ ```
26
+ unionの部分で、元の年度を識別するようには以下の様にします。
27
+ ```SQL
28
+ select 2000 as 年度, * from [2000年]
29
+ union all select 2001, * from [2001年]
30
+ union all select 2002, * from [2002年]
31
+ union all select 2003, * from [2003年]
32
+ union all select 2004, * from [2004年]
25
33
  ```

1

追記

2020/05/28 01:55

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -6,4 +6,20 @@
6
6
 
7
7
  `union all`の場合は、そういったデータが別なクエリーに存在しているという事です。
8
8
 
9
- 2重表示されるものが分かっているなら、それぞれのクエリーでのデータ詳細を確認して下さい。
9
+ 2重表示されるものが分かっているなら、それぞれのクエリーでのデータ詳細を確認して下さい。
10
+
11
+ 追記
12
+ --
13
+ 元にしているデータのレイアウトが変わらないなら、`union all`するのはデータをマージするのを先に行うと簡潔です。
14
+ ```SQL
15
+ SELECT JANコード, 商品名, 販売価格
16
+ , Sum(販売数) AS 販売数の合計, Sum(合計売上) AS 合計売上の合計
17
+ from (
18
+ select * from [2000年]
19
+ union all select * from [2001年]
20
+ union all select * from [2002年]
21
+ union all select * from [2003年]
22
+ union all select * from [2004年]
23
+ ) as marge
24
+ GROUP BY JANコード, 商品名, 販売価格
25
+ ```