在CASE语句中选择2个不同的值

时间:2018-07-24 12:47:03

标签: sql oracle

发生一种情况,我需要根据是否已付款来显示不同的值。这是问题所在:

我有一个包含不同产品的表。这些产品根据是否付款而改变。因此,本来我们将在表中保留此数据行

NAME    DESCRIPTION    CODE        DELIVERY
John     Paid          BookPaid    Posted

如果我们的一种产品在“说明”列中已付款,则我们需要查看“交货”是什么,但是如果尚未付款,则需要查看交货类型是什么,因此看起来像这样< / p>

NAME    DESCRIPTION    CODE        DELIVERY
John     Pending       Book         Postal

我的解决方法是研究CASE语句,但问题是它需要2个条件,为了节省时间,我不想选择多个CASE语句,例如:

CASE WHEN DESCRIPTION = 'Paid'
     THEN NAME, DESCRIPTION, DELIVERY

基本上说何时付款,该数据行包含基于指定的CASE条件的匹配信息。我对此逻辑感到困惑

2 个答案:

答案 0 :(得分:2)

您不能以这种方式直接使用。如果需要,请为每列写手动案例。

示例:

CASE WHEN DESCRIPTION = 'Paid' 
THEN NAME end ,
CASE WHEN DESCRIPTION = 'Paid' 
THEN DESCRIPTION end,
CASE WHEN DESCRIPTION = 'Paid' 
THEN DELIVERY end

答案 1 :(得分:2)

您可以在这样的列选择中使用大小写

select name, description,  --common columns
case DESCRIPTION  --specific columns
when 'Paid' then DELIVERY 
ELSE OTHER_COLUMN END as delivery 
from products