-4

2 つのテーブルがあり、結果を 1 行に表示する mysql ビューを作成する必要があります。

現在、結合を使用していますが、列ではなく行としてレコードが得られます。ピボットを試しましたが、機能しません。ジョブごとに、ペイントの時間、配管の時間、およびその他 (その他はすべてその他) が 1 行に必要です。

テーブル構造は次のとおりです。

ここに画像の説明を入力

4

2 に答える 2

2

これは基本的にPIVOTです。残念ながら MySQL には PIVOT 関数がありませんが、CASEステートメントで集計関数を使用できます。

select jobnum,
  sum(case when tasktype = 'paint' then hrs else 0 end) Paint,
  sum(case when tasktype = 'plumb' then hrs else 0 end) plumb,
  sum(case when tasktype not in ('paint', 'Plumb') then hrs else 0 end) Other
from tablea a
left join tableb b
  on a.id = b.tbla_id
group by jobnum

デモで SQL Fiddle を参照してください

結果:

| JOBNUM | PAINT | PLUMB | OTHER |
----------------------------------
|      1 |    10 |    10 |    20 |
|      2 |    25 |     0 |     0 |
于 2012-11-09T15:43:50.650 に答える
-1
SELECT
    a.`JobNum`,
    SUM(IF(a.`TaskType`='Paint',b.`Hrs`,0)) AS 'Paint',
    SUM(IF(a.`TaskType`='Plumb',b.`Hrs`,0)) AS 'Plumb',
    SUM(IF(a.`TaskType` IN('Paint','Plumb'),0,b.`Hrs`)) AS 'Other'
FROM `tableA` a
INNER JOIN `tableB` b
ON b.`tblAid`=a.`id`
GROUP BY a.`JobNum`
于 2012-11-09T15:58:44.763 に答える