私は 3 つのテーブルを持っています。場所はhttp://rextester.com/PED43367 です。
ロールアップに失敗しました。誰かが私に道を教えてくれますか?
私が欲しい出力は次のとおりです。
結果は問題ありませんが、それではロールアップを作成できません 助けてくれてありがとう
mysql の実行順序 ( MySQL クエリ/句の実行順序) とhttps://dev.mysql.com/doc/refman/5.7/en/group-by-handling.htmlを読み、「ONLY_FULL_GROUP_BY の場合が無効になっている場合、標準 SQL の GROUP BY 使用に対する MySQL 拡張機能により、列が機能的に GROUP BY 列に依存していない場合でも、選択リスト、HAVING 条件、または ORDER BY リストが非集約列を参照できます。前のクエリ。この場合、サーバーは各グループから任意の値を自由に選択できるため、それらが同じでない限り、選択された値は不確定であり、おそらく望んでいるものではありません。」
簡単に言えば、from と join が最初に実行され、group by は危険であり、ロールアップは問題を追加します。
ピボットのためにグループを分離し、「適切に」グループを使用して結合を追加します
select m.codes,m.version,sum(m.headcount) headount,sum(m.reghrs) reghrs, sum(m.hrsbdgt) hrsbudget,
sum(w.workhrs) workhours, sum(w.reghrs) wreghrs,
sum(d1) '02-04-2017',
sum(d2) '09-04-2017',
sum(d3) '16-04-2017',
sum(d4) '23-04-2017',
sum(d5) '30-04-2017',
sum(p.hours) as Total,
SUM(p.hours) - sum(m.HrsBdgt) RsltBdgt
from mtarget m
left join
(
select CODEPivot,categoryPivot ,
SUM(IF(pivot.selesai = '2017-04-02',pivot.hours,0)) d1,
SUM(IF(pivot.selesai = '2017-04-09',pivot.hours,0)) d2,
SUM(IF(pivot.selesai = '2017-04-16',pivot.hours,0)) d3,
SUM(IF(pivot.selesai = '2017-04-23',pivot.hours,0)) d4,
SUM(IF(pivot.selesai = '2017-04-30',pivot.hours,0)) d5,
sum(pivot.hours) hours
from pivot
group by CODEPivot,categoryPivot
) p on
m.codeS = p.CODEPivot
and m.version = p.categoryPivot
left join whweek w on
w.Code = p.CODEPivot
and w.version = p.CategoryPivot
group by codes,version with rollup
+-------+---------+----------+--------+-----------+-----------+---------+------------+------------+------------+------------+------------+-------+----------+
| codes | version | headount | reghrs | hrsbudget | workhours | wreghrs | 02-04-2017 | 09-04-2017 | 16-04-2017 | 23-04-2017 | 30-04-2017 | Total | RsltBdgt |
+-------+---------+----------+--------+-----------+-----------+---------+------------+------------+------------+------------+------------+-------+----------+
| FII | YAA | 3 | 432 | 35 | 144 | 432 | 28 | 28 | 14 | 24 | 41 | 135 | 100 |
| FII | NULL | 3 | 432 | 35 | 144 | 432 | 28 | 28 | 14 | 24 | 41 | 135 | 100 |
| IDS | YAA | 3 | 432 | 35 | 144 | 432 | 8 | 0 | 0 | 0 | 0 | 8 | -27 |
| IDS | NULL | 3 | 432 | 35 | 144 | 432 | 8 | 0 | 0 | 0 | 0 | 8 | -27 |
| RRT | BKK | 1 | 144 | 12 | 144 | 144 | 8 | 3 | 16 | 15 | 32 | 74 | 62 |
| RRT | WESEL | 1 | 144 | 12 | 144 | 144 | 0 | 14 | 7 | 2 | 0 | 23 | 11 |
| RRT | YAA | 9 | 1296 | 104 | 144 | 1296 | 67 | 98 | 135 | 103 | 119 | 522 | 418 |
| RRT | NULL | 11 | 1584 | 128 | 432 | 1584 | 75 | 115 | 158 | 120 | 151 | 619 | 491 |
| NULL | NULL | 17 | 2448 | 198 | 720 | 2448 | 111 | 143 | 172 | 144 | 192 | 762 | 564 |
+-------+---------+----------+--------+-----------+-----------+---------+------------+------------+------------+------------+------------+-------+----------+
9 rows in set (0.00 sec)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加