我有点困了,有人能帮我吗。我有两张结构如下的table。
Table 1
Id String
Code1 String
Code2 String
Table 2
Id String
UserCode String
UniversalCode String
我需要做的是用表2中的universalcode替换code1和code2中的所有值。更清楚的是,如果code1与usercode匹配,则用universalcode重新计算code1;如果code2与usercode匹配,则用universalcode替换同一记录。如果不匹配,则保留code1和code2的值。我需要表1的所有记录。表1和表2通过id连接。
我尝试了下面的一个专栏,但被困在添加代码2
SELECT
Id,
CASE WHEN a.Code1 = b.UserCode then b.UniversalCode else a.Code1 end
from table1 a
LEFT OUTER JOIN table2 b ON (a.Id = b.Id and a.code1 = b.UserCode);
有什么建议吗,实际场景有5-6列,我需要在其中应用相同的逻辑。
Test Data
Table 1
1,123,ABCD
1,ABCD,123
1,456,BCD
1,BCD,789
1,789,100
Table 2
1,123,XXX
1,456,YYY
1,789,ZZZ
2,123,XXX
2,456,YYY
2,789,ZZZ
Output
1,XXX,ABCD
1,ABCD,XXX
1,YYY,BCD
1,BCD,ZZZ
1,ZZZ,100
output with a.id=b.id in Join(Please refer below comments for this output)
1 123 XXX 100 100
1 123 123 100 100
1 123 123 100 100
1 ABCD ABCD 101 101
1 ABCD ABCD 101 101
1 ABCD ABCD 101 101
1 456 456 DEF DEF
1 456 YYY DEF DEF
1 456 456 DEF DEF
1 BCD BCD 789 789
1 BCD BCD 789 789
1 BCD BCD 789 ZZZ
1 789 789 CDE CDE
1 789 789 CDE CDE
1 789 ZZZ CDE CDE
1 100 100 HBT HBT
1 100 100 HBT HBT
1 100 100 HBT HBT
1 100 100 123 XXX
1 100 100 123 123
1 100 100 123 123
2条答案
按热度按时间ocebsuys1#
我不确定我是否理解你,但这样的事情应该能帮助你。
inn6fuwd2#
我们可以试试下面的query:-