码迷,mamicode.com
首页 > 数据库 > 详细

sql不显示重复列

时间:2014-06-30 18:43:18      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:blog   http   2014   art   io   sql   

在报表里,基本上都可以把重复的资料不显示,在SQL里怎么才能做到如下情况呢?

a	10
a	20
b	30
b	40
b	50
显示为:

a	10
	20
b	30
	40
	50

SQL 如下:

create table #a (part varchar(10),price int)
go

insert into #a values('a',10)
insert into #a values('a',20)

insert into #a values('b',30)
insert into #a values('b',40)
insert into #a values('b',50)

go


select * from #a

go
 
select part ,MIN(price) price into #b from #a group by part 
go

select * from #a 
select * from #b
go 
 
 select 
 case when price in (select price from #b) then part else '' end ,price
  from #a 
 go
 
 

参考: http://bbs.csdn.net/topics/310112824

主要内容:

方案一:

if object_id('[tab]') is not null drop table [tab]
create table [tab]([单位] varchar(6),[姓名] varchar(4),[学历] varchar(4))
insert [tab]
select '一车间','张三','本科' union all
select '一车间','李四','本科' union all
select '一车间','王五','本科' union all
select '二车间','王中','专科' union all
select '二车间','刘一','专科'


select 单位,姓名,学历 from 
(
	select 单位,姓名=(select top 1 姓名 from tab where ta.单位=单位 and ta.学历=学历),学历,s1=0,s2=单位,s3=0 from tab ta group by 单位,学历 union all
	select '   '  ,姓名,'',s1=0,s2=单位,s3=1 from  tab tb where  姓名<>(select top 1 姓名 from tab where tb.单位=单位 and tb.学历=学历)
)t
order by s1,s2,s3

/*
单位     姓名   学历   
------ ---- ---- 
二车间    王中   专科
       刘一   
一车间    张三   本科
       李四   
       王五   

(所影响的行数为 5 行)

*/

方案二:

select 姓名 into #temp from (
select [单位],max(姓名)as 姓名 from [tab]
group by [单位]
)T

select case when 姓名 in (select * from #temp ) then [单位] else '' end,
		姓名,
		case when 姓名 in (select * from #temp ) then [学历] else '' end
from [tab]




sql不显示重复列,布布扣,bubuko.com

sql不显示重复列

标签:blog   http   2014   art   io   sql   

原文地址:http://blog.csdn.net/masterlonely/article/details/35987379

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!