我不能得到这个工作,我什么似乎太容易了对不起,但我真的很期待的建议:甲骨文 - 没有得到期望的结果
我有3个表:
事故
(
ACCIDENT_DATE DATE,
DRIVER_CODE VARCHAR2,
DAMAGES NUMBER,
LOCATION_ACCIDENT VARCHAR2,
CAR_CODE VARCHAR2
)
CARS
(
CAR_CODE VARCHAR2,
MODEL VARCHAR2,
YEAR VARCHAR2,
CODE_OWNER VARCHAR2)
// I didn't use this table ,but it was stated so I didn't want to miss anything
PERSON
(
CODE VARCHAR2,
NAME VARCHAR2,
RESIDENCE VARCHAR2
)
查询是:
显示名称,这在过去4个月有超过两起事故的人
我写的代码:
select a.driver_code,a.accident_date,p.name
from accidents a join p person
on (a.driver_code=p.code)
group by a.accident_date,a.driver_code,p.code
having count (a.accident_date)>2
它显示1在发生了2起事故的2名驾驶员中,有一次我摆弄了我的表格数据后表示可以找到任何数据。
我知道我并没有解决它在过去4个月的部分,因为我不知道如何使用它。这是我的想法,虽然我知道这将显示(或想反正)系统的日期和而我想在过去4个月,显示驱动器的事故发生日期(全部)之间的月份:
select a.driver_code,a.accident_date,p.name,
sysdate,accident_date,
months_between(sysdate,accident_date)
from accidents a join p person
on (a.driver_code=p.code)
group by a.accident_date,a.driver_code,p.code
having count (a.accident_date)>2
一般GROUP BY规则说:如果指定了GROUP BY子句,SELECT列表中的每个列引用都必须标识分组列或者是set函数的参数! – jarlh