急,一个sql语句问题!!!(50分)

  • 主题发起人 主题发起人 雨林18
  • 开始时间 开始时间

雨林18

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一个表 bb 里面有三个字段 a 是出货单号 b 是出货金额 c是出货日期
现在我想实现 出货日期是按升序排和出货单号是升序排,出货金额要求是如果同一天的把负数放到同一天的最后一笔,而同一天的正数要按单号的升序排!
我写了个sql
select * from bb order by c,a ASC,b DESC 我试了这条语句不行!
有那位高手指点一下!万分感谢!!
 
将 出货金额 格式化成字符串后排序!
 
to royal1442
这可能不行,因为我排列出来后还要按排列出来的顺序计算的,还有没有更好一些的方法
 
你把金额和单号换一下。
select * from tblout
order by 日期 asc,金额 desc,出单 asc
看看效果是不是。
 
to 蓝叶菱
你这样排日期和金额是对了,但单号乱了,也就是说他是先按金额从小大到小排的!有没有高手帮忙解决
 
蓝蓝愚笨,想想不来什么效果。。。。
 
你的b DESC 受到 a 出货单号 排序的影响,a 和 b是会矛盾的
 
照楼主的意思
不能按照金额排序
只能划分两块
一块是金额〉0,另一块是金额小于0,每一块按照时间和单据排序
我的思路是再增加一个字段(文本)
字段是根据出货日期 加 金额识别 如果金额〉0,识别值为1,金额小于0,识别值为2
然后根据新增加的字段和单号排序
 
你的b DESC 受到 a 出货单号 排序的影响,a 和 b是会矛盾的
蓝蓝也感觉有个逻辑矛盾。。
 
问及此事,向为软请教吧.
 
能不能在排序的时候按大于0或小于0的判断后再排序呢?
 
可以使用UNION
不过,这个样子可能也不分组,不过还有个办就是把使用UNION,但是我感觉的还是很你说的不一样。。
郁闷了。。
 
select * from (select * from bb where b>0 order by c,a
union
select * from bb where b<0 order by c,a)
order by c
这样应该可以实现。
 
多人接受答案了。
 
后退
顶部