2012-01-10 79 views
0

我有如下表數據:自加入SQL Server 2005中

Company_ID Parent_Id Name  SigningGroup 
129   109   A   SG1 
144   105   B   SG2 

我想要得到的輸出低於

Company_ID  Parent_Id Name SigningGroup 
129   109   A  SG1 
109   NULL  X  SG1 
144   105   B  SG2 
105   NULL  Y  SG2 

請幫助。將獲得上述結果的查詢是什麼?

+0

你能更好地格式化這個嗎?這很難閱讀。 – 2012-01-10 10:11:54

+0

@Om:請不要混淆其他人的編輯請 – gbn 2012-01-10 10:31:34

+0

感謝您在表格中設置格式,您能否告訴我您使用過哪種格式的格式。 – 2012-01-10 10:33:36

回答

0

它不是一個自聯接,因爲沒有什麼加入

您在t 雖然

SELECT Company_ID, Parent_ID, [Name], SigningGroup FROM MyTable 
UNION ALL 
SELECT Parent_ID, NULL,  [Name], SigningGroup FROM MyTable 
+0

和downvote的原因? – gbn 2012-01-10 10:19:27

+1

「這個答案很有用」也許不是OP要找的東西,但是用給定的測試數據就足夠了。 – 2012-01-10 10:24:27

+1

這對我很有幫助,而且我也使用了相同的&正確的名稱,我已經從另一個包含詳細信息的表中加入了聯盟的輸出。 – 2012-01-10 12:24:21

1

選擇COMPANY_ID,PARENT_ID,名稱,SigningGroup, 產生這樣的所需輸出工會 從選擇PARENT_ID,空,名稱,SigningGroup 牛逼

+0

我已經更新了我的問題,請看看。 – 2012-01-10 10:31:59

1

嘗試:

; with cte as 
(select Company_ID, Parent_Id, Name, SigningGroup 
from my_table 
union all 
select cte.Parent_Id Company_ID, t.Parent_Id, cte.Name, cte.SigningGroup 
from my_table t join cte on cte.Parent_Id = t.Company_ID) 
select * from cte 
+1

你在這裏做了一些假設...... – gbn 2012-01-10 10:21:00