您的位置:首页 > 其它

报表格式,去除重复的记录

2010-09-24 16:40 169 查看
从数据库里查出的结果如下
名称 大小 价格 厂家
电视机 12 1200 海尔
电视机 10 1000 长虹
电视机 15 1500 康佳
冰箱 12 1200 海尔
冰箱 10 1200 康佳
冰柜 100 2000 康佳
最后显示的结果要这样的:
电视机
12 1200 海尔
10 1000 长虹
15 1500 康佳
冰箱
12 1200 海尔
10 1200 康佳
冰柜
100 2000 康佳

代码

if object_id('tempdb.dbo.#') is not null drop table #
create table #(名称 varchar(8), 大小 int, 价格 int, 厂家 varchar(8))
insert into #
select '电视机', 12, 1200, '海尔' union all
select '电视机', 10, 1000, '长虹' union all
select '电视机', 15, 1500, '康佳' union all
select '冰箱', 12, 1200, '海尔' union all
select '冰箱', 10, 1200, '康佳' union all
select '冰柜', 100, 2000, '康佳'

;with t1 as
(
select id=dense_rank()over(order by 名称),* from #
),
t2 as
(
select distinct id, 0a, 名称 大小, ''价格,''厂家 from t1
union all
select id, 1, ltrim(大小), ltrim(价格), ltrim(厂家) from t1
)
select 大小, 价格, 厂家 from t2 order by id,a
/*
大小         价格         厂家
------------ ------------ --------
冰柜
100          2000         康佳
冰箱
12           1200         海尔
10           1200         康佳
电视机
12           1200         海尔
10           1000         长虹
15           1500         康佳
*/

;with cte as
(
select id=row_number()over(order by getdate()), * from #
)
select 名称 = case id when (select min(id) from cte where 名称=t.名称) then 名称 else '' end, 大小, 价格, 厂家 from cte as t

/*
名称     大小        价格        厂家
-------- ----------- ----------- --------
电视机   12          1200        海尔
10          1000        长虹
15          1500        康佳
冰箱     12          1200        海尔
10          1200        康佳
冰柜     100         2000        康佳
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: