- 注:この質問は以前は単純化されていました。
私はt_shipmentと呼ばれる会社の出荷データテーブルを持っています。 (いくつかの)ヘッダーは、acc_num、type_of_business、contract_exception、payment_statusなどです。テーブルへの複雑なcount()クエリ結果の挿入
他の部門の作業のための要約表を作成する必要があります。そこで私はCREATE TABLEを使って新しいテーブルship_recapを作成します。
次に、関連するデータをt_shipmentからship_recapに要約する必要があります。私は
INSERT INTO ship_recap (vol_lumber)
SELECT COUNT(acc_num) from t_shipment WHERE type_of_business = 'LMB' and (contract_exception = 'VALID' OR payment_status IS NOT NULL)
INSERT INTO ship_recap (vol_oil)
SELECT COUNT(acc_num) from t_shipment where type_of_business = 'OIL' and (contract_exception = 'VALID' OR payment_status IS NOT NULL);)
を使用それは走ったが、結果はでした:
____________________
|vol_lumber| vol_oil |
----------------------
| 150 | NULL |
| NULL | 230 |
----------------------
しかし、その代わりに、私は彼らがなりたい:
____________________
|vol_lumber| vol_oil |
----------------------
| 150 | 230 |
----------------------
私は
INSERT INTO ship_recap (vol_lumber, vol_oil)
(SELECT COUNT(acc_num) from t_shipment WHERE type_of_business = 'LMB' and (contract_exception = 'VALID' OR payment_status IS NOT NULL),
SELECT COUNT(acc_num) from t_shipment where type_of_business = 'OIL' and (contract_exception = 'VALID' OR payment_status IS NOT NULL);)
を使用して試してみました同じ論理の順列(例えば、カンマの変更セミコロンにしたり、かっこを取り除いたりしていましたが、毎回構文エラーが返されました。
結果/リキャップテーブルには20個以上のヘッダーが含まれていて、他のクエリもやや複雑になる場合があります。 SELECT/COUNT-edデータをリキャップテーブルに正しく挿入して1つの行に保持する方法が必要です。
EDIT:リノの提案を1として、私はそれは私が不足しているパラメータと括弧を修正かつて働いていたこの
CREATE TABLE ship_recap (vol_OIL int,vol_LUM int,vol_BEV int,processed_OIL int,processed_LUM int,processed_BEV int);
INSERT INTO ship_recap (vol_OIL, vol_LUM, vol_BEV, processed_OIL, processed_LUM, processed_BEV)
SELECT
COUNT(IF(type_of_business = 'OIL' and process_date = '2016-05-12', 1, NULL)),
COUNT(IF(type_of_business = 'LUM' and process_date = '2016-05-12', 1, NULL)),
COUNT(IF(type_of_business = 'BEV' and process_date = '2016-05-12', 1, NULL)),
COUNT(IF(type_of_business = 'OIL' and process_date = '2016-05-12' and (contract_exception = ‘VALID’ OR payment_status IS NOT NULL), 1, NULL)),
COUNT(IF(type_of_business = 'LUM' and process_date = '2016-05-12' and (contract_exception = ‘VALID’ OR payment_status IS NOT NULL), 1, NULL)),
COUNT(IF(type_of_business = 'BEV' and process_date = '2016-05-12' and (contract_exception = ‘VALID’ OR payment_status IS NOT NULL), 1, NULL)) FROM t_shipment;
を試してみました。
MY_TABLE FROM 'SELECT SUM(果実は= 'りんご')リンゴ、SUM(果実は= 'バナナ')バナナ);'私は理由は分かりません(それをoversimplifyingための私の悪い。)あなたは – Strawberry