DB-Fiddle
CREATE TABLE logistics (
id int primary key,
campaign VARCHAR(255),
event_type VARCHAR (255),
date_offered DATE,
date_ordered DATE,
date_delivered DATE,
quantity VARCHAR(255)
);
INSERT INTO logistics
(id, campaign, event_type,
date_offered, date_ordered, date_delivered, quantity
)
VALUES
("1", "C001", "offered", "2019-04-10", NULL, NULL, "500"),
("2", "C001", "ordered", NULL, "2019-04-16", NULL, "450"),
("3", "C001", "stored", NULL, NULL, "2019-04-18", NULL),
("4", "C002", "offered", "2019-08-14", NULL, NULL, "700"),
("5", "C002", "ordered", NULL, "2019-09-04", NULL, "730"),
("6", "C002", "stored", NULL, NULL, "2019-09-15", "800");
Я хочу выполнить запрос, coalesce
значения которого так:
a) все date values
находятся в одном столбце с именами event_date
и
b) в случае, если quantity
для event_type
stored
(как вы можете видеть для C001
) нет quantity
event_type
order
следует использовать.
Результат должен выглядеть следующим образом:
campaign event_type event_date quantity
C001 offered 2019-04-10 500
C001 ordered 2019-04-16 450
C001 stored 2019-04-18 450
C002 offered 2019-08-14 700
C002 ordered 2019-09-04 730
C002 stored 2019-09-15 800
Я пытался go с этим:
SELECT id,
campaign,
event_type,
coalesce(date_offered, date_ordered, date_delivered) as event_date,
quantity
FROM logistics;
С этот запрос приближается к моим ожидаемым результатам, но для C001
в event_type
stored
есть NULL
для C001
.
Как мне нужно изменить свой запрос, чтобы получить quantity
из event_type
ordered
для event_type
stored
для C001
?