将一列优先于另一列

问题描述 投票:0回答:1

DB-Fiddle

CREATE TABLE logistics (
    id int primary key,
    campaign VARCHAR(255),
    quantity_offered VARCHAR(255),
    quantity_ordered VARCHAR(255), 
    quantity_delivered VARCHAR(255),
    quantity_recorded VARCHAR(255),
    quantity_completed VARCHAR(255)
);

INSERT INTO logistics
(id, campaign,
quantity_offered, quantity_ordered, quantity_delivered, 
quantity_recorded, quantity_completed
)
VALUES 
("1", "C001", "500", "450", "465", "462", "465"),
("2", "C002", "700", "570", NULL, NULL, NULL),
("3", "C003", "600", "610", "605", "602", NULL),
("4", "C004", "300", NULL, NULL, NULL, NULL),
("5", "C005", "400", "425", NULL, NULL, NULL),
("6", "C006", "900", "870", "868", NULL, NULL),
("7", "C007", "350", "360", "372", "375", "390"),
("8", "C008", "250", "290", NULL, NULL, NULL);

在上表中,我有不同的campaigns及其对应的quantitiesquantities用不同的columns填充。


现在,我要基于以下层次结构为每个campaign获取最新可用数量]

quantity_completed > quantity_recorded > quantity_delivered > quantity_ordered > quantity_offered

结果应如下所示:

Campaign      Quantity
C001            465
C002            570
C003            602
C004            300
C005            425
C006            870
C007            390
C008            290

我需要实现什么查询?

DB-Fiddle创建表物流(id int主键,活动VARCHAR(255),提供数量VARCHAR(255),提供数量VARCHAR(255),提供数量VARCHAR(255),...

mysql sql
1个回答
0
投票
使用coalesce()

select l.campaign, coalesce(quantity_completed, quantity_recorded, quantity_delivered, quantity_ordered, quantity_offered) as quantity from logistics;

© www.soinside.com 2019 - 2024. All rights reserved.