Mysql 将一列列优先于另一列
Mysql 将一列列优先于另一列,mysql,sql,Mysql,Sql,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
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);
在上表中,我有不同的活动
,以及相应的数量
数量
填入不同的列
现在,我想根据以下层次结构获取每个
活动的最新可用数量:
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
我需要什么查询来实现这一点?使用coalesce()
:
使用合并()
:
与这个问题相反,我假设这里不需要相关子查询,因为每个活动只出现一次,并且所有数量都定义在一行中。@Michi。是的,所有值都在一行中。也就是说,我不知道你为什么会接受另一个问题更复杂的答案,但这取决于你。我假设——与这个问题相反——我不需要相关子查询,因为每个活动只出现一次,所有数量都定义在一行。@Michi。是的,所有值都在一行中。也就是说,我不知道你为什么接受另一个问题上更复杂的答案,但这取决于你。
select campaign, coalesce(quantity_completed, quantity_recorded, quantity_delivered, quantity_ordered, quantity_offered) as quantity
from logistics;