1

我从查询中得到如下表所示的输出

在此处输入图像描述

现在我需要我的输出应该类似于下表

在此处输入图像描述

它将多行的公共字段合并到一个单元格中。

我怎样才能写一个查询来做到这一点?

4

2 回答 2

1

这种类型的格式化通常更适合在表示层或报告工具中执行,但这是在 T-SQL 中执行类似操作的一种方法:

select
    case when rownumber = 1 then cast(id as varchar(11)) else '' end as id
  , code
  , value
from (
  select
      *
    , id as idsort
    , row_number() over (partition by id order by code) as rownumber
  from yourtable
) as a
order by idsort, rownumber

同样,这不会像 html 表格或任何东西那样显示,也不会有各种格式和对齐选项。

感谢 @bluefeet 设置fiddle

于 2012-10-10T14:37:28.610 回答
1

目前尚不清楚您要做什么,但这会将代码和值列中的项目放在一行中:

select distinct id,
  stuff((select ', ' + code
        from yourtable t2
        where t1.id = t2.id
        for XML path('')),1,1,'')  code,
  stuff((select ', ' + cast(value as varchar(10))
        from yourtable t2
        where t1.id = t2.id
        for XML path('')),1,1,'')  value
from yourtable t1

请参阅带有演示的 SQL Fiddle

于 2012-10-10T12:16:42.163 回答