当前位置: 代码迷 >> Oracle管理 >> 数据查询时,结果显示不全解决办法
  详细解决方案

数据查询时,结果显示不全解决办法

热度:221   发布时间:2016-04-24 04:10:04.0
数据查询时,结果显示不全
SELECT查询的时候,结果显示不全,比如说sessionid中有十个人的数据,查询结果只能显示一部分人的,
请问这种情况是怎么发生的呢,有怎么样的解决方案?
SELECT DISTINCT
       TO_CHAR(VA.COMPANYHIREDTM,'YYYY/MM/DD') AS 进入集团日期,
       VA.PERSONNUM AS 工号,
       VA.PERSONFULLNAME AS 姓名,
       VA.HOMELABORLEVELDSC3 AS 人员类别,
       VA.HOMELABORLEVELDSC1 AS 事业本部,
       VA.HOMELABORLEVELDSC2 AS 部门,
       P2.PERSONCSTMDATATXT AS 职务,
       P3.PERSONCSTMDATATXT AS 职级,
       P1.PERSONCSTMDATATXT AS 工序,
       TO_CHAR(APPLYDATE,'YYYY/MM/DD') AS 日期,
       OFILM_FN_COMENTDSC(VT.PERSONNUM,VT.APPLYDATE) AS 班别,
       TO_CHAR((OFILM_FN_INPUNCH1(VT.PERSONNUM,VT.APPLYDATE)), 'HH24:MI') AS 上班时间1,
       '' AS 下班时间1,
       '' AS 上班时间2,
       TO_CHAR((OFILM_FN_OUTPUNCH2(VT.PERSONNUM,VT.APPLYDATE)),'HH24:MI' ) AS 下班时间2,
       TO_CHAR((OFILM_FN_SHIFTENDTIME(VT.PERSONNUM,VT.APPLYDATE)),'HH24:MI' ) AS 标准下班时间,
       OFILM_FN_STATUS(VT.PERSONNUM,VT.APPLYDATE) AS 出勤状态,
       OFILM_FN_OVERTIME(VT.PERSONNUM,VT.APPLYDATE) AS 加班时间
FROM VP_TOTALS VT
LEFT JOIN VP_ALLPERSONV42 VA ON VT.PERSONNUM=VA.PERSONNUM
LEFT JOIN mywtkemployee MWE on VT.employeeid=MWE.employeeid
JOIN PERSONCSTMDATA P1 ON VT.PERSONID=P1.PERSONID
JOIN PERSONCSTMDATA P2 ON VT.PERSONID=P2.PERSONID
JOIN PERSONCSTMDATA P3 ON VT.PERSONID=P3.PERSONID
WHERE  P1.CUSTOMDATADEFID = 1
AND P2.CUSTOMDATADEFID = 6
AND P3.CUSTOMDATADEFID = 7
AND MWE.SESSIONID=:wtksessionid
AND APPLYDATE BETWEEN :From_timeframe AND :To_timeframe
ORDER BY VA.PERSONNUM,APPLYDATE

------解决思路----------------------
 P1.CUSTOMDATADEFID = 1
AND P2.CUSTOMDATADEFID = 6
AND P3.CUSTOMDATADEFID = 7

AND APPLYDATE BETWEEN :From_timeframe AND :To_timeframe
把这几个条件调整到on后面的连接条件中,把后面的join改为left join
这个条件应该是筛选掉一部分数据
  相关解决方案