2016-08-22 56 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来创建一个临时表,然后您将查询以执行顺序。 –