- Примечание: этот вопрос ранее был упрощен; вопрос был добавлен, чтобы лучше понять мою проблему.
У меня есть таблица данных о пересылке компании, называемой t_shipment. (Некоторые из них) заголовки acc_num, type_of_business, contract_exception, payment_status и т. Д.Ввод результатов комплексного подсчета() в таблицу
Мне нужно сделать recap-таблицу для работы другого отдела. Поэтому я создаю новую таблицу ship_recap, используя CREATE TABLE.
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);)
И перестановки одной и той же логики (например, изменение запятой в точку с запятой или вынуть круглые скобки), но каждый раз он возвращал синтаксическую ошибку.
Таблица результатов/recap может содержать до 20+ заголовков, а другие запросы могут быть немного сложнее. Мне нужен способ правильно вставить данные SELECT/COUNT-ed в таблицу recap и сохранить их в одной строке.
РЕДАКТИРОВАТЬ: По предложению Рено, я попробовал это
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