2017-10-30 4 views
0

私の質問には問題があります。複数の重複が内側の結合を使用している私のクエリにあります

私はこのデータを持って、チェック

  1. Trans_lhphd(a)の http://sqlfiddle.com/#!9/e1cef6/2
  2. Trans_lhpdthp(b)は http://sqlfiddle.com/#!9/3d528e/1

これは私のクエリです:

SELECT 
SUM(
    IF (a.IdShift = '1', a.Planning, 0) 
) AS Shift1, 
SUM(
    IF (a.IdShift = '2', a.Planning, 0) 
) AS Shift2, 
SUM(

    IF (a.IdShift = '3', a.Planning, 0) 
) AS Shift3, 
SUM(a.Planning) AS total, 
SUM(
    IF (
     b.IdShift = '1', 
     b.QtyProduksi, 
     0 
    ) 
) AS Shift1a, 
SUM(
    IF (
     b.IdShift = '2', 
     b.QtyProduksi, 
     0 
    ) 
) AS Shift2a, 
SUM(
    IF (
     b.IdShift = '3', 
     b.QtyProduksi, 
     0 
    ) 
) AS Shift3a 
FROM 
    trans_lhphd a INNER JOIN trans_lhpdthp b ON 
     b.IdBukti= a.IdBukti 
WHERE 
    a.DivisiId = 'DI070' AND 
    b.HasilProduksi = 'Good' AND 
    a.Tanggal BETWEEN '2017-10-01' AND 
    '2017-10-16' 
GROUP BY 
    a.Tanggal 

よります私と一緒にクエリ、このような結果:テーブルtrans_lhpdthpに複数の行があるので

| Shift1|Shift2|Shift3|total|Shift1a|Shift2a|Shift3a| 
|-------|------|------|-----|-------|------ |-------| 
| 4000 | 1200 |1210 |6410 |310 |450 |120 | 
| 1000 | 0 |0  |1000 |500 |0  |0  | 

そして、私は結果にしたいが間違っ

| Shift1|Shift2|Shift3|total|Shift1a|Shift2a|Shift3a| 
    |-------|------|------|-----|-------|------ |-------| 
    | 2000 | 1200 |1210 |4410 |310 |450 |120 | 
    | 1000 | 0 |0  |1000 |500 |0  |0  | 

フィールドSHIFT1でなければなりません。

たぶん、あなたはあなたが参加する前にネストされたクエリを使用して集計trans_lhpdthpを必要とすることtofix

答えて

0

を助けることができる:

置き換える:

FROM 
    trans_lhphd a INNER JOIN trans_lhpdthp b ON 
     b.IdBukti= a.IdBukti 

をによって:

FROM 
    trans_lhphd a INNER JOIN (
     select 
      IdBukti,HasilProduksi,Tanggal, 
      sum(QtyProduksi) as QtyProduksi 
     from trans_lhpdthp 
     group by IdBukti,HasilProduksi,Tanggal) b ON 
     b.IdBukti= a.IdBukti 
関連する問題