又一个复杂的SQL问题,请求大家帮助。

jxlmz 2010-01-21 10:34:18
table1
meetnum meettype
1-101 标准会议室_15人
1-102 标准会议室_10人
1-103 标准会议室_10人
1-104 标准会议室_10人
1-105 视频会议室_20人
2-204 标准会议室_10人
2-205 标准会议室_10人
2-206 标准会议室_10人


table2
id mtmeetnum destineday fromhour fromminute tohour tominute
1095107100000000013 1-101 2010-01-21 09 10 10 10
1095107100000000015 1-101 2010-01-21 11 10 12 10
1095107100000000017 1-101 2010-01-21 13 10 14 10
1095107100000000014 1-105 2010-01-25 13 00 17 00
1095107100000000016 1-105 2010-01-21 13 00 17 00

要查出的结果 条件 where table2.destineday='2010-01-21' order by meetnum,fromhour,fromminute desc
注意: 重复1-101的地方不显示方法见例1:
meetnum destineday fromhour fromminute tohour tominute
1-101 2010-01-21 09 10 10 10
2010-01-21 11 10 12 10
2010-01-21 13 10 14 10
1-102
1-103
1-104
1-105 2010-01-21 13 00 17 00
2-204
2-205
2-206
------------------------------------
例1:
SELECT DECODE(RN, 1, mtmeetnum), destineday,staffname,fromhour,FROMMINUTE
FROM (SELECT t.mtmeetnum,
t.destineday,
t.staffname,
fromhour,
FROMMINUTE,
ROW_NUMBER() OVER(PARTITION BY t.mtmeetnum ORDER BY MTMEETNUM ,fromhour,FROMMINUTE DESC) RN
FROM use_mtmeetmessage t
WHERE t.isdelete = 'F'
ORDER BY T.MTMEETNUM ,t.fromhour,T.FROMMINUTE DESC);
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocao_2005 2010-01-26
  • 打赏
  • 举报
回复
我猜这个是页面显示效果吧?
meetnum destineday fromhour fromminute tohour tominute
1-101 2010-01-21 09 10 10 10
2010-01-21 11 10 12 10
2010-01-21 13 10 14 10
1-102
1-103
1-104
1-105 2010-01-21 13 00 17 00
2-204
2-205
2-206
如果是的话,在数据库里面处理这样的逻辑不划算,逻辑运算不是数据库的强项.即使按照lz的做法实现了,code的效率和可读性都稍微有点打折.
数据库就负责返回对meetnum 排序的结果,然后在前台去判断后面重复的meetnum 是否显示就可以了.
如果猜测错了,lz请不要见怪,就当没说....
xuhua7788 2010-01-21
  • 打赏
  • 举报
回复
楼主不错,...呵呵
tangren 2010-01-21
  • 打赏
  • 举报
回复
学习一下
todayandtomorrow 2010-01-21
  • 打赏
  • 举报
回复
left join 是问题得要点哦
jxlmz 2010-01-21
  • 打赏
  • 举报
回复
解决了,
select decode(nn,1,bbb.meetnum),
bbb.*
from
(select t.meetnum, '2010-01-21'aaa,m.*,ROW_NUMBER() over (partition by t.meetnum order by t.meetnum,m.fromhour,m.fromminute desc)nn
from use_mtmeeting t
left join use_mtmeetmessage m on t.meetnum||'2010-01-21' =
m.mtmeetnum||m.destineday
order by t.meetnum)bbb

给大家参考
crazylaa 2010-01-21
  • 打赏
  • 举报
回复
jf
ojuju10 2010-01-21
  • 打赏
  • 举报
回复
用left join

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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