2013-03-15 60 views
-4

返回輸出我有兩個表sql查詢與加入的幫助或子查詢

Table1        Table2 
id  Name      id table1id  Name 
1  A      1  1   a 
2  B      2  1   aa 
3  C      3  1   aaa 
           4  2   b 
           5  2   bb 

我想輸出 名1名2

A   a 
      aa 
      aaa 
B   b 
      bb 
+0

我試着左加入 – 2013-03-15 12:15:32

+0

它給了我重複輸出三次,但我只想單一A – 2013-03-15 12:16:14

+1

你知道嗎,你應該真的在前端做你的格式。 – 2013-03-15 12:17:06

回答

1

試試這個:

Declare @Table1 table 
(id int ,name varchar(10)) 

Insert into @Table1 
values 
(1,'A'), 
(2,'B'), 
(3,'C') 


Declare @Table2 table 
(id int,tableid int ,name varchar(10)) 

Insert into @Table2 
values 
(2, 1,'aa'), 
(3, 1,'aaa'), 
(4, 2 ,'b'), 
(5,2,'bb') 


;With cte(Name1,Name2,rn) as 
(Select t1.name ,t2.name, 
    row_number() over (partition by t1.name order by t1.id) as rn 
    from @table1 as t1 inner join @Table2 as T2 
    on t2.tableid=t1.id 
) 
Select case when rn=1 then name1 else '' end as c1, 
name2 
from cte 
+0

您可以刪除OVER()子句中的第二個SELECT,而不是使用t1.id來排序。 – 2013-03-15 14:30:02

+0

謝謝。我其實正在嘗試選擇0.沒有注意到用於排序的列 – praveen 2013-03-17 02:15:10