回答編集履歴

1

予算

2017/09/05 08:23

投稿

yambejp
yambejp

スコア114779

test CHANGED
@@ -37,3 +37,125 @@
37
37
  ,coalesce(sum((bt.month='06')*budget),0) as m6b
38
38
 
39
39
  としてもいいかもしれません。
40
+
41
+
42
+
43
+ # 予算分調整
44
+
45
+ 少し汎用性をあげました
46
+
47
+ ```
48
+
49
+ select
50
+
51
+ kaisha,zokusei2
52
+
53
+ ,sum(m6*(t2.m=5)) as m5
54
+
55
+ ,coalesce(sum(budget*(bt.month=5)),0) as m5b
56
+
57
+ ,sum(m6*(t2.m=6)) as m6
58
+
59
+ ,coalesce(sum(budget*(bt.month=6)),0) as m6b
60
+
61
+ from (
62
+
63
+ select
64
+
65
+ kaisha
66
+
67
+ ,case when zokusei in (1,2) then 1 else zokusei end as zokusei2
68
+
69
+ ,date_format(hiduke,'%Y') as y
70
+
71
+ ,date_format(hiduke,'%m') as m
72
+
73
+ ,sum(price) as m6
74
+
75
+ from tbl as t1
76
+
77
+ group by kaisha ,zokusei2 ,y,m
78
+
79
+ ) as t2
80
+
81
+ left join budget_target as bt on bt.kid=t2.kaisha and bt.zid=t2.zokusei2 and bt.year=t2.y and bt.month=t2.m
82
+
83
+ where t2.y='2017'
84
+
85
+ group by kaisha asc,zokusei2 asc with rollup
86
+
87
+ ```
88
+
89
+ これをt_kaisha,t_zaikoをかぶせて
90
+
91
+
92
+
93
+ ```
94
+
95
+ select
96
+
97
+ coalesce(kaisha,999) as kaisha,
98
+
99
+ coalesce(zokusei2,999) as zokusei2,
100
+
101
+ concat(tk.kname,' - ',tz.zname) as kz,
102
+
103
+ m5,
104
+
105
+ m5b,
106
+
107
+ m6,
108
+
109
+ m6b
110
+
111
+ from
112
+
113
+ (select
114
+
115
+ kaisha,zokusei2
116
+
117
+ ,sum(m6*(t2.m=5)) as m5
118
+
119
+ ,coalesce(sum(budget*(bt.month=5)),0) as m5b
120
+
121
+ ,sum(m6*(t2.m=6)) as m6
122
+
123
+ ,coalesce(sum(budget*(bt.month=6)),0) as m6b
124
+
125
+ from (
126
+
127
+ select
128
+
129
+ kaisha
130
+
131
+ ,case when zokusei in (1,2) then 1 else zokusei end as zokusei2
132
+
133
+ ,date_format(hiduke,'%Y') as y
134
+
135
+ ,date_format(hiduke,'%m') as m
136
+
137
+ ,sum(price) as m6
138
+
139
+ from tbl as t1
140
+
141
+ group by kaisha ,zokusei2 ,y,m
142
+
143
+ ) as t2
144
+
145
+ left join budget_target as bt on bt.kid=t2.kaisha and bt.zid=t2.zokusei2 and bt.year=t2.y and bt.month=t2.m
146
+
147
+ where t2.y='2017'
148
+
149
+ group by kaisha asc,zokusei2 asc with rollup
150
+
151
+ ) as t3
152
+
153
+ left join t_kaisha as tk on coalesce(kaisha,999)=tk.kid
154
+
155
+ left join t_zokusei as tz on coalesce(zokusei2,999)=tz.zid
156
+
157
+ order by kaisha,zokusei2
158
+
159
+
160
+
161
+ ```