SELECT A.QD_ID,A.SNAME,SUM(NVL(B.AMOUNT,0)) AMOUNT FROM QD_TABLE A LEFT JOIN QD_OUT_TABLE B ON (A.QD_ID=B.QD_ID AND to_char(B.SDATE,'yyyy-mm-dd')>='2010-12-26' AND to_char(B.SDATE,'yyyy-mm-dd')<'2012-12-26') LEFT JOIN CL_TABLE C ON B.CL_ID=C.CL_ID and c.jdfl_id=0GROUP BY A.QD_ID,A.SNAME ORDER BY A.QD_IDQD_TABLE 是区队表,QD_OUT_TABLE 是区队出库表,CL_TABLE 是材料表,jdfl_id 是材料中的材料分类字段
我想不管QD_OUT_TABLE 记录中有没有数据,所有的区队都是要显示的,不过现在的情况是加上了条件,根本不起作用
,和没加一样,种类改变,查询出的结果也没有变化
我想不管QD_OUT_TABLE 记录中有没有数据,所有的区队都是要显示的,不过现在的情况是加上了条件,根本不起作用
,和没加一样,种类改变,查询出的结果也没有变化
解决方案 »
- oracle 报错!ora-00600;internal error code,argument:[4097],[]
- Oracle实现分页,求各位前辈给小弟详细的说一下,谢谢了。
- oracle 异常处理
- 谁能让找个Oracle数据库服务器彻底瘫痪?
- 请教一个oracle数据库迁移之后的问题??????
- 怎样限制同一个用户名同时只能登陆一个用户?
- (谢谢给位)如何保存新创建的表的内容?急急!
- linux下如何使用oracle9i?
- 两台机器之间进行数据库的备份和恢复,无归档模式,请问如何进行整个数据库的恢复?
- 请问EXECUTE IMMEDIATE中的sql是否需要一定的长度?
- sql中如何获取当前时间的关联时间
- 问下oracle10g的几本书,在网上有电子中文版的可以下吗?
where c.jdfl_id=0
--你的条件加在C表上,而求的结果是 A.QD_ID,A.SNAME,SUM(NVL(B.AMOUNT,0))
--并C表是左连接上去的,你在C表上增加任何条件都不会影响A表和B表数据的展现,自然结果就不会有什么变化了
--不知道你是不是想表达这个意思。SELECT A.QD_ID, A.SNAME, SUM(NVL(B.AMOUNT, 0)) AMOUNT
FROM QD_TABLE A
LEFT JOIN QD_OUT_TABLE B ON (A.QD_ID = B.QD_ID AND
TO_CHAR(B.SDATE, 'yyyy-mm-dd') >=
'2010-12-26' AND
TO_CHAR(B.SDATE, 'yyyy-mm-dd') <
'2012-12-26')
LEFT JOIN CL_TABLE C ON B.CL_ID = C.CL_ID
WHERE C.JDFL_ID = 0
GROUP BY A.QD_ID, A.SNAME
ORDER BY A.QD_ID
;
--可以换种写法试试,我觉得这样看的比较条理
SELECT A.QD_ID,A.SNAME,SUM(NVL(D.AMOUNT,0)) AMOUNT
FROM QD_TABLE A ,(SELECT B.QD_ID,B.AMOUNT
FROM QD_OUT_TABLE B,CL_TABLE C
WHERE B.CL_ID=C.CL_ID AND TO_CHAR(B.SDATE,'YYYY-MM-DD')>='2010-12-26'
AND TO_CHAR(B.SDATE,'YYYY-MM-DD')<'2012-12-26') AND C.JDFL_ID=0
) D
WHERE A.QD_ID=D.QD_ID(+)
GROUP BY A.QD_ID,A.SNAME
ORDER BY A.QD_ID