2016-08-22 54 views
1

我需要找到不同的問題,以便他們被不同的ID所問。如果多次詢問同一個問題,我只需要一次。我正在使用SQL服務器。 這裏是我的榜樣 -如何在SQL Server中使用ORDER BY和FOR XML選擇DISTINCT

ID   Orderid    Question 
1   1     aaa 
1   2     bbb 
1   2     bbb 
1   3     ccc 
1   3     ccc 
1   4     ddd 
1   5     eee 
2   1     klm 
2   2     pqr 
2   3     abc 
2   3     abc 
2   4     ttt 
2   5     fff 

我想2排,每ID只不同的問題和問題通過的OrderID

ID   Question 
1   aaa,bbb,ccc,ddd,eee 
2   klm,pqr,abc,ttt,fff 

回答

2

順序應該是爲了你似乎知道你需要的功能使用。你只需要把它放在一起:

select i.id, 
     stuff((select ',' + question 
       from t t2 
       where t2.id = t.id 
       group by question 
       order by min(orderid) 
       for xml path ('') 
      ), 1, 1, '' 
      ) as question 
from (select distinct id from t) i; 
+0

非常感謝答覆,我試過,但它不給我問題的順序,如果我添加順序,它要求我在選擇列表中添加此。 – kbs

+0

@kbs。 。 。呃,我更明白你在問什麼。 –

+0

@kbs正確。把它想象成一個CTE。您正在使用XML PATH來創建一個臨時表,然後您將查詢以執行順序。 –