[英]Eliminate zero values and put values in two different columns in one row
CREATE TABLE check_inbound
(
id SERIAL PRIMARY KEY,
data_source VARCHAR,
product VARCHAR,
inbound_type VARCHAR,
quantity DECIMAL
);
INSERT INTO check_inbound (data_source, product, inbound_type, quantity)
VALUES
('data_source_01', 'product_a', 'type_01', '500'),
('data_source_01', 'product_a', 'type_02', '200'),
('data_source_01', 'product_b', 'type_01', '130'),
('data_source_01', 'product_b', 'type_02', '320'),
('data_source_01', 'product_c', 'type_01', '700'),
('data_source_01', 'product_c', 'type_02', '850'),
('data_source_02', 'product_a', 'type_01', '980'),
('data_source_02', 'product_a', 'type_02', '315'),
('data_source_02', 'product_b', 'type_01', '760'),
('data_source_02', 'product_b', 'type_02', '512'),
('data_source_02', 'product_c', 'type_01', '125'),
('data_source_02', 'product_c', 'type_02', '720');
預期結果:
產品 | 入站類型 | 數量_數據_來源_01 | 數量_數據_來源_02 |
---|---|---|---|
產品_a | type_01 | 500 | 980 |
產品_a | type_02 | 200 | 315 |
產品_b | type_01 | 130 | 760 |
產品_b | type_02 | 320 | 512 |
產品_c | type_01 | 700 | 125 |
產品_c | type_02 | 850 | 720 |
我想比較兩個不同data_sources
中每個product
和inbound_type
的quantity
。
我能夠通過這個查詢接近結果:
SELECT
i.data_source AS date_source,
i.product AS product,
i.inbound_type AS inbound_type,
(CASE WHEN i.data_source = 'data_source_01' THEN SUM(i.quantity) ELSE 0 END) AS quantity_data_source_01,
(CASE WHEN i.data_source = 'data_source_02' THEN SUM(i.quantity) ELSE 0 END) AS quantity_data_source_02
FROM
check_inbound i
GROUP BY
1, 2, 3
ORDER BY 2,1
但是,我無法弄清楚如何擺脫具有零值的行並將數量放在與預期結果相同的行上。
你知道我需要改變什么才能讓它工作嗎?
您在此處執行 pivot 查詢,並且應該僅按產品和類型進行聚合。 我建議在這里使用MAX
和FILTER
:
SELECT
i.product AS product,
i.inbound_type AS inbound_type,
MAX(i.quantity) FILTER (WHERE i.data_source = 'data_source_01') AS quantity_data_source_01,
MAX(i.quantity) FILTER (WHERE i.data_source = 'data_source_02') AS quantity_data_source_02
FROM check_inbound i
GROUP BY 1, 2
ORDER BY 2, 1;
如果您想使用CASE
表達式,請使用此版本,例如
MAX(CASE WHEN i.data_source = 'data_source_01'
THEN i.quantity END) AS quantity_data_source_01
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.