给大家出道SQL的题,答对给满分100分~

princesky 2003-07-11 12:55:39
有两张表:
A表(关键字:工事CD 公司CD)
工事CD 公司CD
001 A01
001 A02
001 A03
001 A04
002 A01
002 A02
B表(关键字:工事CD)
工事CD 参加公司1 参加公司2 参加公司3 参加公司4 参加公司5
001 A02 A04 A03 A01 空
002 A02 A01 空 空 空

两张表的结构如上:
现在要求从A表中抽出的“公司CD”,按在B表中参加公司1,2,3,4,5的先后顺序排序。
抽出结果为:
工事CD 公司CD
001 A02
001 A04
001 A03
001 A01
002 A02
002 A01

请教该SQL如何写?
...全文
20 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Myyokel 2003-07-11
  • 打赏
  • 举报
回复
Select a.* from A表 a left join B表 b on a.工事CD=b.工事CD Order by
a.工事CD,Charindex(','+a.公司CD+',',','+b.参加公司1+','+b.参加公司2+','+b.参加公司3+','+b.参加公司4+','+b.参加公司5+',')
CrazyFor 2003-07-11
  • 打赏
  • 举报
回复
改成Left Join就对了.
Select a.* from A表 a left join B表 b on a.工事CD=b.工事CD Order by
a.工事CD,Charindex(','+a.公司CD+',',','+b.参加公司1+','+b.参加公司2+','+b.参加公司3+','+b.参加公司4+','+b.参加公司5+',')
yehuazi 2003-07-11
  • 打赏
  • 举报
回复
select 工事CD, 公司CD from (
select A.工事CD, A.公司CD,
DECODE(A.公司CD, b.参加公司1, 1, b.参加公司2, 2,
b.参加公司3, 3, b.参加公司4, 4,
b.参加公司5, 5, 6 ) num
from A
left join
B
on a.工事CD=b.工事CD) C order by num
97866 2003-07-11
  • 打赏
  • 举报
回复
Select a.* from A表 a,B表 b where a.工事CD=b.工事CD Order by
a.工事CD,Charindex(','+a.公司CD+',',','+b.参加公司1+','+b.参加公司2+','+b.参加公司3+','+b.参加公司4+','+b.参加公司5+',')
97866 2003-07-11
  • 打赏
  • 举报
回复
Select a.* from A表 a,B表 b where a.工事CD=b.工事CD Order by
a.工事CD,Charindex(a.公司CD,b.参加公司1+b.参加公司2+b.参加公司3+b.参加公司4+b.参加公司5)
CrazyFor 2003-07-11
  • 打赏
  • 举报
回复
select * from A
order by 工事CD
,charindex(','+A.公司CD+',' , (select ','+参加公司1+','+参加公司2+','+参加公司3+','+参加公司4+','+参加公司5+',' from B where 工事CD=A.工事CD))
princesky 2003-07-11
  • 打赏
  • 举报
回复
我的sql要在oracle中运行,不能用case when这类语句。
通常的sql语句都能执行,还有没有办法?
CrazyFor 2003-07-11
  • 打赏
  • 举报
回复
select * from A
order by 工事CD
,case when exists(select 1 from B where 参加公司1=A.公司CD) then 1
when exists(select 1 from B where 参加公司2=A.公司CD) then 2
when exists(select 1 from B where 参加公司3=A.公司CD) then 3
when exists(select 1 from B where 参加公司4=A.公司CD) then 4
else 5
end

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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