- 论坛徽章:
- 0
|
四列acc_no, total_price, order_id, order_date,一个表, order_main
数据类似于:
acc_no total_price order_id order_date
1 300 20 2009-01-09
2 3245 22 2007-01-09
3 98 63 2008-11-09
2 44442 53 2009-09-09
1 234 34 2009-12-09
....
....
如果只要acc_no与total_price也就简单了,直接
SELECT acc_no, max( total_price )
FROM po.order_main WHERE order_id >0
AND acc_no IS NOT NULL AND order_date > "2007-01-01" GROUP BY acc_no ORDER BY acc_no
也就够了。
不过现在还想要另外两列
order_id,
order_date的信息。
直接把这两列附在上面的sql后面是不行的。
所以只有用另外的办法,not exists 如:
SELECT a.acc_no, a.total_price, a.order_id, a.order_date
FROM po.order_main AS a
WHERE NOT
EXISTS (SELECT *
FROM po.order_main
WHERE total_price > a.total_price
AND acc_no = a.acc_no
)
AND a.order_date > "2007-01-01" AND a.order_id >0 AND a.acc_no IS NOT NULL ORDER BY a.acc_no
这样据说是理想的结果。
不过有些客户订单的总价一直是10,就没有出现这个sql的结果中(在第一个sql的结果中出现了)
所以这个sql的结果不全
怎么改才能把那些订单总价都相同的客户也包括进来呢?
牛人也顺便解决下not exists的用法吧。
谢谢 |
|