将多行合并为单行

时间:2017-08-09 09:00:02

标签: sql sql-server sql-server-2008-r2

我有下表: - table1

 ID        Desc

 1         ABC

 2         DEF

 3         GHI

 3         JKL

 4         MNO

 4         PQR

 4         STU

我想将数据显示为: -

 ID      Desc

 1         ABC

 2         DEF

 3         GHI

           JKL

 4         MNO

           PQR

           STU

我试图将其设为: -

select distinct ID , Desc from table1

但它不起作用。

4 个答案:

答案 0 :(得分:4)

在Sql server中可能:

   Select distinct ID , stuff((SELECT  ','+Description FROM #a a WHERE 
   t.id=a.id for xml path('')),1,1,'') Description
   from #a T


  Output :  Id        Desc
            1         ABC
            2         DEF
            3         GHI,JKL
            4         MNO,PQR,STU

答案 1 :(得分:2)

因为我知道你不能,你必须在请求后修改你的表的外观(例如在html中)

答案 2 :(得分:2)

这需要在表示层处理,但您可以查询如下:

Select Case when Row_Number() over(Partition by Id order by Id) = 1 then Id else Null end as Id, 
    [Desc] from #data

答案 3 :(得分:1)

以下查询将生成所需的结果。

SELECT CASE WHEN (Rank() Over(ORDER BY id ASC)) = (Row_Number() Over (ORDER BY id ASC)) THEN id ELSE NULL END as ID, desc FROM table1