求sql大牛来帮忙!!!!!!

没事眯一会 2011-07-21 04:54:32
假设有这么个表:
htbh dzkje hkrq
001 500 2011-01-01
002 400 2011-06-05
001 600 2011-07-01
002 800 2010-12-12
我想要变成这样的结果,sql应该怎么写啊?
001 600 2011-07-01
001 500 2011-01-01
002 400 2011-06-05
002 800 2010-12-12
...全文
134 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frances 2011-08-02
  • 打赏
  • 举报
回复
select * from tab order by htbh,hkrq desc;
xj2000101 2011-07-29
  • 打赏
  • 举报
回复
select htbh,dzkje,hkrq
from
(select t.*,row_number()over(partition by t.htbh order by t.hkrq) dd
from AA t)
没事眯一会 2011-07-25
  • 打赏
  • 举报
回复
14楼正解!其他都不对....
貌似这句话在oracle就执行不了..
select * from 表1 group by 表1.xx order by 表1.yy desc;
没事眯一会 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 benchim888 的回复:]
SQL code


--直接上代码不解释,不过看不出来你的 日期按照什么规矩排序,001的乱排呢。。
SQL> with t1 as(
2 select '001' htbh, 500 dzkje, '2011-01-01'hkrq from dual union all
3 select '002' htbh, 400 dzkje, '2011-06-05'hkrq f……
[/Quote]
不明白 ? “001”的日期是降序,“002”的日期也是降序排列。也就是说htbh可能有多个日期,每个htbh的日期都要降序排列。htbh这一列,不用排序001在前或者002在前无所谓,但是必须在一起,而且他的日期还要排序!
我这还没正解,昨天自己想的,现在还没做出来,sql不是强项,脑子笨,求大牛帮忙给个正解!
黎雨梦荷 2011-07-22
  • 打赏
  • 举报
回复
ls说的对,问题本身就提的不是很明白,hkrp的顺序很乱。或许ls正解,代码都上来了。
黎雨梦荷 2011-07-22
  • 打赏
  • 举报
回复
= =你先把自己的意思表达清楚嘛!你写的要得到的表中日期hkrp有升序,有降序,我看dzkje倒是降序。
select * from AA
group by htbn order by htbn,dzkje desc;
如果hkrp是降序,那就是:
select * from AA
group by htbn order by htbn,hkrp desc;
BenChiM888 2011-07-22
  • 打赏
  • 举报
回复

--直接上代码不解释,不过看不出来你的 日期按照什么规矩排序,001的乱排呢。。
SQL> with t1 as(
2 select '001' htbh, 500 dzkje, '2011-01-01'hkrq from dual union all
3 select '002' htbh, 400 dzkje, '2011-06-05'hkrq from dual union all
4 select '001' htbh, 600 dzkje, '2011-07-01'hkrq from dual union all
5 select '002' htbh, 800 dzkje, '2010-12-12'hkrq from dual union all
6 select '003' htbh, 900 dzkje, '2010-07-07'hkrq from dual union all
7 select '001' htbh, 600 dzkje, '2010-08-09'hkrq from dual union all
8 select '004' htbh, 200 dzkje, '2010-01-26'hkrq from dual union all
9 select '003' htbh, 600 dzkje, '2010-12-12'hkrq from dual union all
10 select '004' htbh, 900 dzkje, '2011-07-12'hkrq from dual)
11 select htbh,dzkje,hkrq
12 from t1
13 order by htbh,hkrq desc;

HTB DZKJE HKRQ
--- ---------- ----------
001 600 2011-07-01
001 500 2011-01-01
001 600 2010-08-09
002 400 2011-06-05
002 800 2010-12-12
003 600 2010-12-12
003 900 2010-07-07
004 900 2011-07-12
004 200 2010-01-26

已选择9行。

SQL>


[Quote=引用 2 楼 benchim888 的回复:]
SQL code

select htbh,dzkje,hkrq
from table_name
order by htbh,hkrq desc;
[/Quote]
没事眯一会 2011-07-22
  • 打赏
  • 举报
回复
可能是我没说清楚,或者数据小看不出来吧
假设有这么个表:AA
htbh dzkje hkrq
001 500 2011-01-01
002 400 2011-06-05
001 600 2011-07-01
002 800 2010-12-12
003 900 2010-07-07
001 600 2010-08-09
004 200 2010-01-26
003 600 2010-12-12
004 900 2011-07-12
我想要变成这样的结果,sql应该怎么写啊?
001 600 2010-08-09
001 600 2011-07-01
001 500 2011-01-01
002 400 2011-06-05
002 800 2010-12-12
003 600 2010-12-12
003 900 2010-07-07
004 900 2011-07-12
004 200 2010-01-26
要先按htbh分组,然后每组的htbh中的日期还要排序,
没事眯一会 2011-07-22
  • 打赏
  • 举报
回复
不对!
黎雨梦荷 2011-07-22
  • 打赏
  • 举报
回复
LZ:“001”的日期是降序,“002”的日期也是降序排列。也就是说htbh可能有多个日期,每个htbh的日期都要降序排列。htbh这一列,不用排序001在前或者002在前无所谓,但是必须在一起,而且他的日期还要排序!
再结合你给的表,那就是说降序就行,那么order by htbn,hkrp desc;可以实现的。
黎雨梦荷 2011-07-22
  • 打赏
  • 举报
回复
LZ一直没有表达清楚自己的意思,LS的厉害,我围观下~~~
BenChiM888 2011-07-22
  • 打赏
  • 举报
回复
我写的sql就是正解了。
从你的结果看,就是按照 htbn 升序,hkrp 降序 即 order by htbn,hkrp desc;

如果你认为结果不对的话,把你的 表结构和数据导成sql脚本粘上来,给你看看。
wallace_jjh 2011-07-21
  • 打赏
  • 举报
回复
应该都回答正确了啊,lz最好也试一试
select htbh,dzkje,hkrq
from table_name
order by htbh,hkrq desc;
kingwinerscxp 2011-07-21
  • 打赏
  • 举报
回复
select htbh,dzkje,hkrq
from TABLE
order by htbh,hkrq desc,dzkje desc
dongdongsdo0310 2011-07-21
  • 打赏
  • 举报
回复
select * from table
order by htbn,hkrp desc;
這個不用試吧
黎雨梦荷 2011-07-21
  • 打赏
  • 举报
回复
htbn你给的表不是升序排列吗?怎麽是降序?hkrp是降序。
黎雨梦荷 2011-07-21
  • 打赏
  • 举报
回复
select * from table
order by htbn,hkrp desc;
没事眯一会 2011-07-21
  • 打赏
  • 举报
回复
忘了说一点是要在oracle中!
没事眯一会 2011-07-21
  • 打赏
  • 举报
回复
我的意思是htbh要分组同时htbh的hkrq要降序排列。
没事眯一会 2011-07-21
  • 打赏
  • 举报
回复
你们在数据库中试了吗?
加载更多回复(3)

1,617

社区成员

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

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