报表格式,去除重复的记录
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 康佳
代码
名称 大小 价格 厂家
电视机 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 康佳 */
相关文章推荐
- MySQL去除重复记录(临时表方法)
- Oracle去除表中重复记录
- 关于SQL语句中去除重复记录方法
- java如何读取Excel并存入list中时去除重复记录
- Oracle中去除重复记录的方法:
- oracle去除重复记录 去重 sql去重 记录
- SQL去除重复记录的几种技巧
- 自我整理:去除List<String[]>中String[x]中重复的记录
- sql 单表distinct/多表group by查询去除重复记录
- SQL去除重复记录(oracle)
- SQL去除重复记录(七种)
- mysql 去除表中重复记录
- mysql表去除重复的记录
- JAVAEE model1模型实现商品浏览记录(去除重复的浏览记录)(一)
- [水晶报表]重复记录显示一次
- 去除sql server中重复的数据--完全相同的记录方法
- oracle数据库去除重复记录sql
- 报表演变历史-网格式报表-合计、记录个数
- mysql去除重复记录
- 利用Word打印报表(三)----在jsp中利用word打印指定格式的会议记录