发布网友 发布时间:2022-04-27 09:13
共6个回答
懂视网 时间:2022-05-02 05:36
在报表里,基本上都能够把反复的资料不显示,在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
主要内容:
方案一:
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不显示反复列
标签:case 内容 pop obj .net name pos arc from
热心网友 时间:2022-05-02 02:44
1、select distinct 查询字段名 。热心网友 时间:2022-05-02 04:02
你的意思是只显示表3的内容? 你的前两个表中 张男 不是一个人啊 所以查询表时会全部显示的 要是只要表3的话 你可以这么写select A1 from 表 where 编号=00001或者是1 看你的是什么 就行了热心网友 时间:2022-05-02 05:37
select * from 表1 not exists (select 1 from 表2 where 表1.id=表2.id)首先查询表1中去除与表2重复的数据,然后查询出表2中去除表1重复的数据,然后拼接起来这两部分数据,不过你要保证你的表1和表2的字段名都相同
热心网友 时间:2022-05-02 07:28
select * from t2 where a1 not in (select a1 from t1)热心网友 时间:2022-05-02 09:36
select a1,a2,a3,a4,a5,a6,a7,a8,a8,a9,a10,a11,a12,a13,a14, distinct a15,a16,a17 from 表