求一条SQL语句

111oi 2008-07-17 02:02:59
有3张表 a,b,c
a表:name age nameid
b表: companyid nameid companyTitle
c表:companyId companyName
现在我用一条SQL语句 select distinct a.name ,c.companyName ,b.companyTitle , a.age ,
+ " from a , b , c"
+ " where a.nameId = b.nameId and b.companyId = c.companyId "
已经输出了name age companyName companyTitle
1 XX YYYYY ZZZZZ
1 XX AAAAA BBBBB
2 RR RRRRR PPPPP
3 WW WWWWW WWWWW
3 WW QQQQQ QQQQQ

但是我现在想要输出name age companyName companyTitle
1 XX YYYYY ZZZZZ
AAAAA BBBBB
2 RR RRRRR PPPPP
3 WW WWWWW WWWWW
QQQQQ QQQQQ
应该如何用distinct这个关键词?
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
111oi 2008-07-17
  • 打赏
  • 举报
回复
谢谢
-狙击手- 2008-07-17
  • 打赏
  • 举报
回复
以上演示了消除B列的重复
-狙击手- 2008-07-17
  • 打赏
  • 举报
回复
--测试数据
create table 表(a varchar(10),b varchar(10),d varchar(10))
insert 表 select '1','101','222'
union all select '2','101','302'
union all select '3','101','205'
union all select '4','102','203'
union all select '5','102','560'
union all select '6','101','302'



go

--处理1
select id=identity(int,1,1),* into #t from 表

select a,b=case id when (select min(id) from #t where b=a.b)
then b else '' end

,d
from #t a

/*
a b d
---------- ---------- ----------
1 101 222
2 302
3 205
4 102 203
5 560
6 302

(所影响的行数为 6 行)

*/

drop table #t
go

--处理2

select a,
b=case when exists(select 1 from 表 where b=t.b and a<t.a) then '' else b end,
d
from 表 T
order by a,b


/*
a b d
---------- ---------- ----------
1 101 222
2 302
3 205
4 102 203
5 560
6 302

(所影响的行数为 6 行)

*/


--删除测试环境
drop table 表
111oi 2008-07-17
  • 打赏
  • 举报
回复
这个是往EXCEL里填充的数据
就是想把name和AGE字段重复的给筛选出来
填充以后的格式
name age companyName companyTitle
1 XX YYY YYY
AAA BBB
2 RR RRR PPP
3 WW WWW WWW
QQQ QQQ

就是把重复的字段筛选掉
-狙击手- 2008-07-17
  • 打赏
  • 举报
回复
重复列的列显示空白,这个坛上有例子,找一下
arrow_gx 2008-07-17
  • 打赏
  • 举报
回复
1 XX YYYYY ZZZZZ
AAAAA BBBBB
2 RR RRRRR PPPPP
3 WW WWWWW WWWWW
QQQQQ QQQQQ


要求输出的数据没看明白,什么意思呢 ??

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧