我有一张带有方向指示器的表格,基于此我需要派生一个新列,告诉它是IN还是Out
ORG_IN ORG_OUT DEST_IN DEST_OUT Direction
0 0 0 0 NULL
0 0 0 1 Out
0 0 1 0 In
0 1 0 0 Out
0 1 0 1 Out
0 1 1 0 NULL
1 0 0 0 In
1 0 0 1 NULL
1 0 1 0 In
这是生成方向的查询 http://sqlfiddle.com/#!4/a9f82/1
您认为它将涵盖所有组合的所有案例。现在我只能看到上面的组合。有更好的方法来编写sql。
答案 0 :(得分:0)
select t.*, case ORG_IN + DEST_IN - ORG_OUT - DEST_OUT
when 2 then 'In'
when 1 then 'In'
when 0 then null
when -1 then 'Out'
when -2 then 'Out'
end as Direction
from tablename t
我无法找出更多有效的组合。但是,我建议使用检查约束,确保没有输入无效组合:
check (ORG_IN + ORG_OUT < 2 and DEST_IN + DEST_OUT < 2)