Oracle 运行选择1名员工的查询,但结果生成多人
我正在运行以下查询,但只需要一个人(employeeid)的结果。结果是吸引了很多人,我无法确定我做错了什么。我正在使用oraclesqldevOracle 运行选择1名员工的查询,但结果生成多人,oracle,Oracle,我正在运行以下查询,但只需要一个人(employeeid)的结果。结果是吸引了很多人,我无法确定我做错了什么。我正在使用oraclesqldev SELECT a.employeeid, TO_CHAR(a.startdtm, 'mm-dd-yyyy'), TO_CHAR(a.startdtm, 'hh24:mi'), TO_CHAR(a.enddtm, 'hh24:mi'), ((a.enddtm - a.startdtm) *24*60/60) "TOTAL", b.pa
SELECT a.employeeid,
TO_CHAR(a.startdtm, 'mm-dd-yyyy'),
TO_CHAR(a.startdtm, 'hh24:mi'),
TO_CHAR(a.enddtm, 'hh24:mi'),
((a.enddtm - a.startdtm) *24*60/60) "TOTAL",
b.paycodename,
(timeinseconds/3600)
FROM timesheetitem a,
vp_timesheetitmv42 b
WHERE b.employeeid = '15642'
AND (a.startdtm = b.startdtm
AND timeinseconds IS NOT NULL)
OR a.startdtm = b.startdtm
AND a.EVENTDTM
BETWEEN TO_DATE('01-JAN-2013', 'dd-MON-YYYY')
AND TO_DATE('31-MAR-2013', 'dd-MON-yyyy')
在你的b.employeeid='15642'
旁边有一个“or”语句,这意味着它很可能带来的不仅仅是该员工。使用括号:
之前:
where b.employeeid = '15642'
and (a.startdtm = b.startdtm and timeinseconds is not null)
or a.startdtm = b.startdtm
and a.EVENTDTM between TO_DATE('01-JAN-2013', 'dd-MON-YYYY') and TO_DATE('31-MAR-2013', 'dd-MON-yyyy')
之后:
where b.employeeid = '15642'
and ((a.startdtm = b.startdtm and timeinseconds is not null)
or a.startdtm = b.startdtm
and a.EVENTDTM between TO_DATE('01-JAN-2013', 'dd-MON-YYYY') and TO_DATE('31-MAR-2013', 'dd-MON-yyyy'))
我不是甲骨文大师,但看看:
and (a.startdtm = b.startdtm and timeinseconds is not null)
or a.startdtm = b.startdtm
依我拙见,或
条件产生了不想要的值。对我而言,前一个条件等于:
and (a.startdtm = b.startdtm)
我认为这应该起作用:
where
b.employeeid = '15642'
and (a.startdtm = b.startdtm)
and a.EVENTDTM between TO_DATE('01-JAN-2013', 'dd-MON-YYYY')
and TO_DATE('31-MAR-2013', 'dd-MON-yyyy')
请设置SQL的格式,使其实际上是可读的。看起来您可能在其他地方缺少括号,但这不是您问的问题,所以我让您自己来解决这些问题