2017-02-09 50 views
0

我有一個表作爲分級組件列表。列A顯示1級,列B顯示2級。列B中的2級項目也將列在1級列A中,然後在列B中顯示3級,依此類推。我的第一次嘗試只能返回那些具有固定一組較低級別的級別1項目,如下面的查詢中所述,基於表本身的聯接數量。我想返回所有超過1級的事物,不管是否只有2級或2級& 3等等。我不太瞭解數據透視表,但認爲這可能是答案所在。單元子單元表查詢

表:(在C下B A下一個層次d)

Unit | SubUnit 
------|-------- 
    A | B 
    B | C 
    C | D 
    E | F 
    F | G 
    H | I 

期望的結果

L1 | L2 | L3 | L4 
A | B | C | D 
E | F | G 
H | I 

目前查詢:

SELECT a.[UNIT] AS L1U,a.[SUBUNIT] AS L2U, b.[SUBUNIT] AS L3U, 
c.[SUBUNIT] AS L4U 
FROM [Table] a JOIN [Table] b ON a.[SUBUNIT] = b.[UNIT] 
JOIN [Table] c ON b.[SUBUNIT] = c.[UNIT] 

回答

0

我想你只需要left join s:

SELECT a.[UNIT] AS L1U, a.[SUBUNIT] AS L2U, b.[SUBUNIT] AS L3U, 
     c.[SUBUNIT] AS L4U 
FROM [Table] a LEFT JOIN 
    [Table] b 
    ON a.[SUBUNIT] = b.[UNIT] LEFT JOIN 
    [Table] c 
    ON b.[SUBUNIT] = c.[UNIT]; 

否則,您的結果將只包含具有所有四個級別的單位。

+0

這就是我需要的解決方案。現在似乎很簡單。謝謝。 –