日期:2014-05-17  浏览次数:20775 次

oracle多表联查问题
a,b,c,d四张表

a与c关联(a.cid = c.cid),b与c关联(b.bid=c.bid),b与d关联(b.bid=d.bid),b表放的是用户,c表放的是用户的网站(一个用户可能有多个网站),a表放的是用户网站产生的订单号,d表放的是用户的状态。
现在要查询近三个月内,d.coupon状态为Y的用户的用户分组(b.gno),用户id(b.bid)以及该用户的订单总数,我写的sql语句如下,但报错ORA-00979: not a GROUP BY expression

select b.gno,b.bid,count(DISTINCT(a.dingdan)) from  a,b,c,d
WHERE a.cid = c.cid AND b.bid = c.bid AND b.bid = d.bid 
AND d.COUPON='Y' AND 
a.YYYYMMDD BETWEEN  TO_CHAR(SYSDATE,'YYYYMMDD')-300 AND TO_CHAR(SYSDATE,'YYYYMMDD') group by b.bid


这个sql语句哪里错了?应该怎么写?先谢谢各位了

------解决方案--------------------
select后面的 b.gno,b.bid都得放在group by 后面