2016-05-11 12 views
1

私はreport.butを生成するためにmysqlデータベースからデータを取得しようとしています。複数のwhereとgroup句を持つ複数のselectがあると苦労しています。Multiple複数のwhere句とグループで選択する

2番目と3番目のselectステートメントのSUM(pf.meter)は、関連するselectステートメントでwhere句が指定されている値を返す必要があり、メインのselectステートメントGroup by句でグループ化する必要があります。

ここでは計画していない数量は計画されていません。すべての行で同じようにすることはできません。顧客、色、スタイルごとにグループ化する必要があります。ここで

は、それはあなたが達成しようとしているかは明らかではありません、私のSQL

SELECT pm.date, 
     pm.customer, 
     pf.style, 
     pf.color, 
     COUNT(pf.roll_no) AS Roll_QTY, 
     SUM(pf.yard) AS Yard_QTY, 
     SUM(pf.meter) AS Meter_QTY, 
     SUM(pf.kilo) AS Kilo_QTY, 
     (
      SELECT SUM(pf.meter) 
      FROM packinglists_fabrics_items pf, packinglists_main pm 
      WHERE pf.aql_status = 0 
      AND pf.grn_no= pm.gp_no[ 
      AND pm.date BETWEEN {DateR, RANGE1} AND {DateR, RANGE2}] 
     ) FB_Not_Passed_Qty,  
     (
      SELECT SUM(pf.meter) 
      FROM packinglists_fabrics_items pf, packinglists_main pm 
      WHERE pf.aql_status = 1 
      AND pf.tag_gen = 0 
      AND pf.grn_no= pm.gp_no[ 
      AND pm.date BETWEEN {DateR, RANGE1} AND {DateR, RANGE2}] 
     ) Not_Planned_Qty 
FROM packinglists_main pm, packinglists_fabrics_items pf 
WHERE pf.grn_no= pm.gp_no[ 
AND pm.date BETWEEN {DateR, RANGE1} AND {DateR, RANGE2}] 
GROUP BY pm.customer, pf.style, pf.color 
+1

これは非常に不明です。スキーマ、サンプルデータ、期待される出力を含めることができますか? – shmosel

+0

@shmosel私はdescription.pleaseでab画像を追加しました – colombo

+1

MySqlはSqlサーバーではありませんのでご注意ください。それらは2つの異なる製品です。 –

答えて

1
SELECT pm.date, pm.customer, pf.style, pf.color, COUNT(pf.roll_no) AS Roll_QTY, 
     SUM(pf.yard) AS Yard_QTY, SUM(pf.meter) AS Meter_QTY, SUM(pf.kilo) AS Kilo_QTY, 
    SUM(case when pf.aql_status = 0 then pf.meter else 0 end) FB_Not_Passed_Qty, 
    SUM(case when pf.aql_status = 1 and pf.tag_gen = 0 then pf.meter else 0 end) Not_Planned_Qty 
FROM packinglists_main pm, 
    packinglists_fabrics_items pf 
WHERE pf.grn_no= pm.gp_no[ 
    AND pm.date BETWEEN {DateR, 
         RANGE1} AND {DateR, 
            RANGE2}] 
GROUP BY pm.customer, pf.style, pf.color 
0

です。サンプルデータや期待される出力例はありません。

しかし、あなたは条件付き集計の結果の後にあるかもしれないようだ:

結果、このようなことから:

SELECT pm.date 
    , pm.customer 
    , pf.style 
    , pf.color 
    , COUNT(pf.roll_no) AS Roll_QTY 
    , SUM(pf.yard)   AS Yard_QTY 
    , SUM(pf.meter)  AS Meter_QTY 
    , SUM(pf.kilo)   AS Kilo_QTY 

    , SUM(IF(pf.aql_status = 0, pf.meter, 0)) AS FB_Not_Passed_Qty 

    , SUM(IF(pf.aql_status = 1 AND pf.tag_gen = 0, pf.meter, 0)) AS Not_Planned_Qty 

    FROM packinglists_main pm 
    JOIN packinglists_fabrics_items pf 
    ON pf.grn_no = pm.gp_no 
WHERE pm.date BETWEEN ? AND ? 
GROUP 
    BY pm.customer 
    , pf.style 
    , pf.color 

ヒント:

ディッチ古い学校のコンマ演算子ON句の結合述部で新しいJOIN構文を使用します。

関連する問題