我有下表
我是SQL新手,我想创建一个新列,根据满足的条件为ID分配特定值。想象一下,当条件1 =' Y'价值'价值1'被分配,当条件2和条件3都等于' Y'价值'价值2'被安排了。所以这意味着对于ID 1,所有条件也适用于#1; Value1'作为' Value2'满足了。所以输出应该如下所示:
因此请注意,ID = 1没有两行,一个满足条件的每个值,而对于ID = 3和ID = 4,没有任何条件满足,因此它们被赋值为null。关于如何做到这一点的任何想法?
答案 0 :(得分:0)
我看不出case
对此有用。这是一种使用union all
的方法:
select id, 'Value1'
from t
where condition1 = 'Y'
union all
select id, 'Value1'
from t
where condition2 = 'Y' and condition3 = 'Y'
union all
select id, NULL
from t
where not (condition1 = 'Y' or (condition2 = 'Y' and condition3 = 'Y'));
如上所述,代码假定条件永远不会NULL
,但很容易合并。