数据查询时,结果显示不全

qq_24421679 2014-12-17 09:04:26
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
...全文
774 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24421679 2014-12-17
  • 打赏
  • 举报
回复
引用 5 楼 bw555 的回复:
P1.CUSTOMDATADEFID = 1 AND P2.CUSTOMDATADEFID = 6 AND P3.CUSTOMDATADEFID = 7 AND APPLYDATE BETWEEN :From_timeframe AND :To_timeframe 把这几个条件调整到on后面的连接条件中,把后面的join改为left join 这个条件应该是筛选掉一部分数据
按照这个解决了,谢谢了!
qq_24421679 2014-12-17
  • 打赏
  • 举报
回复
引用 5 楼 bw555 的回复:
P1.CUSTOMDATADEFID = 1 AND P2.CUSTOMDATADEFID = 6 AND P3.CUSTOMDATADEFID = 7 AND APPLYDATE BETWEEN :From_timeframe AND :To_timeframe 把这几个条件调整到on后面的连接条件中,把后面的join改为left join 这个条件应该是筛选掉一部分数据
这样还是不行
bw555 2014-12-17
  • 打赏
  • 举报
回复
P1.CUSTOMDATADEFID = 1 AND P2.CUSTOMDATADEFID = 6 AND P3.CUSTOMDATADEFID = 7 AND APPLYDATE BETWEEN :From_timeframe AND :To_timeframe 把这几个条件调整到on后面的连接条件中,把后面的join改为left join 这个条件应该是筛选掉一部分数据
qq_24421679 2014-12-17
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
按你初始语句只要VT含有全部,并且PERSONCSTMDATA含有全部与VT表对应的信息,应该就可以正常查出来
我单个的查这几个表 里面全都可以查到单个的数据的
bw555 2014-12-17
  • 打赏
  • 举报
回复
按你初始语句只要VT含有全部,并且PERSONCSTMDATA含有全部与VT表对应的信息,应该就可以正常查出来
qq_24421679 2014-12-17
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
你数据的问题吧,其他表中不能涵盖所有数据 调整下连接顺序 mywtkemployee MWE放在最前面,然后left join其他表,下面的join也改为leftJOIN
换了还是没用,请问你的意思是想获得完整数据必须得其他表中也都有是么? 如果其他表中没有的话 可不可以换个连接方式解决呢?
bw555 2014-12-17
  • 打赏
  • 举报
回复
你数据的问题吧,其他表中不能涵盖所有数据 调整下连接顺序 mywtkemployee MWE放在最前面,然后left join其他表,下面的join也改为leftJOIN

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧