2016-09-15 23 views
0

我有2个表:accounthierarchy和accountvaluetotal。如何连接2表键当在不同的列

2表之间的链接是帐号。我想根据帐号加入表格。但表“帐户层级”的帐号在不同的级别(列)上。

能否请你帮我该怎么办呢?由于

CREATE TABLE [dbo].[accounthierarchy](
[ID] [int] NULL, 
[level1] [int] NULL, 
[level2] [int] NULL, 
[level3] [int] NULL, 
[level4] [int] NULL, 
[level5] [int] NULL) 

INSERT INTO [dbo].[accounthierarchy] (ID,level1,Level2,level3,level4,level5) 
VALUES 
(1,100,null,null,null,null), 
(2,100,110,null,null,null), 
(3,100,110,1110,null,null), 
(4,200,220,null,null,null), 
(5,200,230,null,null,null), 
(5,200,240,null,null,null), 
(6,200,240,2410,null,null) 

CREATE TABLE [dbo].[accountvaluetotal](
[accountnumber] [int] NULL, 
[values] [int] NULL 
) 

insert into [dbo].[accountvaluetotal] 
values 
(1110,5000), 
(220,7400), 
(230,6200), 
(2410,5600) 
+0

识别您的主键和外键(S)(使用[编辑])。 –

+0

大家好,抱歉误会,我想要这样的结果: – phalondon

回答

0

在此基础上,该账号是在accounthierarchy表中的“最后的价值;

SELECT ID, COALESCE(ac.level5,ac.level4,ac.level3,ac.level2,ac.level1) as AccountNumber 
from [accounthierarchy] ac 

然后会给你的账户号码,然后你就可以做一个标准的加入

COALESCE给出了从值列表中的第一个非空值,所以从5级去级别1,它将返回首先到达的任何有效值。

1

可以使用INNER JOIN-

SELECT * 
FROM accounthierarchy 
INNER JOIN accountvaluetotal 
ON level13=accountnumber; 
相关问题