从一个应用程序中选择并插入另一个应用程序。第一个系统有9个电话号码字段,第二个系统只有4个。我不想将静态的4从旧映射到新。对于每个数据记录,我都希望根据优先级以及是否填充来选择。
这似乎是查找第X个非空列的一种练习。
我确定这一定是另一个问题的重复,但是我还没有找到那个问题...
对于第一个非空值,COALESCE当然很有效:
TargetColumn1 = coalesce(SourcePriorityColumn1, SourcePrioritycolumn2, SourcePriorityColumn3,...,SourcePriorityColumn9)
对于第二优先级(“第二非空列”),它变得更加复杂:
TargetColumn2 =
SELECT
CASE
when Col1 is not null then coalesce(Col2, Col3, Col4, ... , col9)
else when Col2 is not null then coalesce(col3, col4, col5, ... , col9)
else when Col3 is not null then coalesce(col4, col5, col6, ... , col9)
...
else Col9
我知道从哪里开始查找第三或第四非空列。
请注意,我仅限于可以在SELECT语句中完成的操作-无程序语言。但是,如果需要,我可以创建临时表。
谢谢!