2016-09-15 36 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; 
相關問題