2017-08-09 121 views
1

我有如下表: - 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 

但它不工作。

+1

这听起来像是在表现层上应该做的事情,而不是数据访问。 – Tanner

回答

2

什么,我知道你不能,你有请求后修改表的外观(例如HTML)

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/16978894) –

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 
2

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

Select Case when Row_Number() over(Partition by Id order by Id) = 1 then Id else Null end as Id, 
    [Desc] from #data 
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