回答編集履歴

2

調整

2017/03/07 13:17

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -60,6 +60,8 @@
60
60
 
61
61
  ,-sum(price*(d=@d- interval 1 day))+sum(price*(d=@d)) as diff_price
62
62
 
63
+ ,case when sum(d=(@d-interval 1 day))=0 then '追加' when sum(d=@d)=0 then '削除' else '' end as status
64
+
63
65
  from ganpura where d between @d- interval 1 day and @d
64
66
 
65
67
  group by id
@@ -68,30 +70,28 @@
68
70
 
69
71
  ```
70
72
 
71
- |id|name|diff_stock|diff_price|
73
+ |id|name|diff_stock|diff_price|status|
72
74
 
73
- |:--|:--|--:|--:|
75
+ |:--|:--|--:|--:|:--|
74
76
 
75
- |MS-06|ザク|-3|0|
77
+ |MS-06|ザク|-3|0||
76
78
 
77
- |MSM-04|アッガイ|3|2000|
79
+ |MSM-04|アッガイ|3|2000|追加|
78
80
 
79
81
 
80
82
 
81
83
  @d:='2017-03-07'の箇所を'2017-03-08'変更すれば
82
84
 
83
- |id|name|diff_stock|diff_price|
85
+ |id|name|diff_stock|diff_price|status|
84
86
 
85
- |:--|:--|--:|--:|
87
+ |:--|:--|--:|--:|:--|
86
88
 
87
- |MS-06|ザク|0|-2000|
89
+ |MS-06|ザク|0|-2000|削除|
88
90
 
89
- |MS-09|ドム|0|-500|
91
+ |MS-09|ドム|0|-500||
90
-
91
- ※ただしこれだとザクは削除されたけど価格が下がったように表示される
92
92
 
93
93
 
94
94
 
95
- どういっ結果を得たいのか提示してもらえれば削除なのか価格変更なのか
95
+ 調整しまし
96
96
 
97
- きりわけも可能
97
+

1

追記

2017/03/07 13:17

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -7,3 +7,91 @@
7
7
  この手の在庫管理は月初在庫を確定しておき、そこから入出庫データを
8
8
 
9
9
  たしたり引いたりして特定日のstokを計算してください
10
+
11
+
12
+
13
+ # 追記
14
+
15
+
16
+
17
+ ```SQL
18
+
19
+ create table ganpura(id varchar(20),name varchar(20),price int,stock int,d date,unique(id,d));
20
+
21
+ insert into ganpura values
22
+
23
+ ('MS-06','ザク',2000,3,'2017-03-06'),
24
+
25
+ ('MS-09','ドム',2500,3,'2017-03-06'),
26
+
27
+ ('MSM-07','ズゴック',1700,3,'2017-03-06'),
28
+
29
+ ('MS-06','ザク',2000,0,'2017-03-07'),
30
+
31
+ ('MS-09','ドム',2500,3,'2017-03-07'),
32
+
33
+ ('MSM-07','ズゴック',1700,3,'2017-03-07'),
34
+
35
+ ('MSM-04','アッガイ',2000,3,'2017-03-07'),
36
+
37
+ ('MS-09','ドム',2000,3,'2017-03-08'),
38
+
39
+ ('MSM-07','ズゴック',1700,3,'2017-03-08'),
40
+
41
+ ('MSM-04','ガンダム',2000,3,'2017-03-08');
42
+
43
+
44
+
45
+ ```
46
+
47
+ ※条件:日付が連続していること
48
+
49
+ それが担保されないなら、前日の日付を探す処理が必要
50
+
51
+
52
+
53
+ 3/6→3/7への変化
54
+
55
+ ```SQL
56
+
57
+ select id,name
58
+
59
+ ,-sum(stock*(d=(@d:='2017-03-07')- interval 1 day))+sum(stock*(d=@d)) as diff_stock
60
+
61
+ ,-sum(price*(d=@d- interval 1 day))+sum(price*(d=@d)) as diff_price
62
+
63
+ from ganpura where d between @d- interval 1 day and @d
64
+
65
+ group by id
66
+
67
+ having diff_stock<>0 or diff_price<>0;
68
+
69
+ ```
70
+
71
+ |id|name|diff_stock|diff_price|
72
+
73
+ |:--|:--|--:|--:|
74
+
75
+ |MS-06|ザク|-3|0|
76
+
77
+ |MSM-04|アッガイ|3|2000|
78
+
79
+
80
+
81
+ @d:='2017-03-07'の箇所を'2017-03-08'変更すれば
82
+
83
+ |id|name|diff_stock|diff_price|
84
+
85
+ |:--|:--|--:|--:|
86
+
87
+ |MS-06|ザク|0|-2000|
88
+
89
+ |MS-09|ドム|0|-500|
90
+
91
+ ※ただしこれだとザクは削除されたけど価格が下がったように表示される
92
+
93
+
94
+
95
+ どういった結果を得たいのか提示してもらえれば削除なのか価格変更なのか
96
+
97
+ きりわけも可能