- 注意:此問題之前已過於簡化;該問題已被追加,以更好地瞭解我的問題
我有一個公司的貨運數據表,名爲t_shipment。 (其中一些)標題是acc_num,type_of_business,contract_exception,payment_status等。將複數count()查詢結果插入表
我需要爲其他部門的工作側做一個回顧表。所以我使用CREATE TABLE創建了一個新表ship_recap。
CREATE TABLE ship_recap
(vol_lumber(int), vol_oil(int);)
然後我需要回顧從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數據插入到概括表中,並將它們保存在一行中。
編輯:按照雷諾的建議,我想這
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;
它的工作,一旦我糾正了缺少的參數和括號。
'SELECT SUM(水果= '蘋果')蘋果,SUM(水果= '香蕉')香蕉FROM MY_TABLE;'我不知道爲什麼你會存儲這個派生的數據 – Strawberry