我有两个tables
帐户代码如下,
table 1:
account
50000
50006
50015
50105
50150
50155
50165
table 2:
Account
50000
50010
50140
50105
50150
50155
50165
我需要加入这两个tables
。如果table-1
的任何帐户代码与table-2
不匹配,那么我已隐式将table-1帐户代码更改为table-2帐户代码。
我做了如下的事情,
SELECT T1.Account, T2.Account
FROM table1 t1
INNER JOIN table2 t2
on (t2.account = CASE t1 .account
WHEN 50015 THEN 50010
WHEN 50006 THEN 50140
ELSE t1 .account
END )
但我只得到匹配的代码作为输出,
account Account
50000 50000
50105 50105
50150 50150
50155 50155
50165 50165
我没有获得不匹配的帐户代码,即(50006 and 50015)
。任何人都可以帮我找出这里的错误吗?
我的预期输出是
account Account
50000 50000
50006 50140
50015 50010
50105 50105
50150 50150
50155 50155
50165 50165
感谢您的帮助
答案 0 :(得分:2)
试试这个
SELECT T1.Account, T2.Account
FROM table1 t1
INNER JOIN table2 t2
on (t1.account = CASE t1 .account
WHEN 50015 THEN t2 .account+5
WHEN 50006 THEN t2 .account-134
ELSE t2 .account
END )
答案 1 :(得分:2)
使用CASE
然后DISTINCT
数据,这将为您提供通用解决方案
-- table1
declare @table1 table
(account bigint)
insert into @table1 values (50000)
insert into @table1 values (50006)
insert into @table1 values (50015)
insert into @table1 values (50105)
insert into @table1 values (50150)
insert into @table1 values (50155)
insert into @table1 values (50165)
-- table2
declare @table2 table
(account bigint)
insert into @table2 values (50000)
insert into @table2 values (50010)
insert into @table2 values (50140)
insert into @table2 values (50105)
insert into @table2 values (50150)
insert into @table2 values (50155)
insert into @table2 values (50165)
-- QUERY
select distinct t1.account as Account1,
Account2 = case
when t1.account = t2.account then t2.account else t1.account
end
from @table1 t1, @table2 t2
RESULT
Account1 Account2
50000 50000
50006 50006
50015 50015
50105 50105
50150 50150
50155 50155
50165 50165
评论后编辑 - 这是我们要求的一部分。我需要在50140中更新与50006帐户代码相对应的金额,依此类推......
select distinct t1.account as Account1,
Account2 = case
when t1.account = 50006 then 50140
when t1.account = 50015 then 50010
else t1.account end
from @table1 t1 , @table2 t2
RESULT
Account1 Account2
50000 50000
50006 50140
50015 50010
50105 50105
50150 50150
50155 50155
50165 50165
答案 2 :(得分:1)
你可以试试这个
SELECT T1.Account, T2.Account
FROM table1 t1
INNER JOIN table2 t2
on (t2.account = CASE
WHEN t1.account = 50015 THEN 50010
WHEN t1.account=50006 THEN 50140
ELSE t1.account
END )
答案 3 :(得分:1)
SELECT T1.Account, T2.Account,(CASE t1 .account
WHEN 50015 THEN 50010
WHEN 50006 THEN 50140
ELSE t1 .account
END) as New_Account
FROM table1 t1
INNER JOIN table2 t2
on (t2.account = t1.account )