表a: 物料名称,数量。表b:物料名称,领用数量,领用时间
请帮忙写个sql语句查出8月份之前未被领用的物料名称和数量,这个怎么写啊?
请帮忙写个sql语句查出8月份之前未被领用的物料名称和数量,这个怎么写啊?
解决方案 »
- 关于嵌套语句
- oracle中 int smallint 区别
- TNS-12500: TNS:监听器未能启动专用的服务器进程
- uncategorized SQLException for SQL []; SQL state [null]; error code [17410]; 无法从套接字读取更多的数据
- 急,下面的语句为什么不产生文件?否则下岗了
- 请问怎样实现用MSSQL的导出数据把MSSQL库里的数据导入LINUX平台下的ORACLE9I里?
- 数据库插入问题
- 树结构在数据库表存储中通常如何表示?
- servlet里有没有办法同时更新Clob字段和一般字段(不使用sql插入clob)?
- Oracle提取汉字去除标点符号
- 急!如何用SQL语句求百分比?
- 如何在一个bat文件中执行一个sql语句?
(select '1' from b where a.name=b.name and b.领用时间<8月1日)
union all
select a.name,a.cnt-t.cnt from a ,
(select name,sum(cnt) cnt from b where b.领用时间<8月1日
group by name) t
where a.name=t.name;
Minus
Select 物料名称 From B Where 领用时间 < '2007-08-01'
SELECT WEBSKY.SPEC_UT_STK_TBL.ITM_CD FROM WEBSKY.SPEC_UT_STK_TBL , WEBSKY.FACIL_TBL, WEBSKY.PROD_ITM_TBL WHERE ( WEBSKY.SPEC_UT_STK_TBL.FACIL_CD = WEBSKY.FACIL_TBL.FACIL_CD AND WEBSKY.SPEC_UT_STK_TBL.FACIL_CD = WEBSKY.FACIL_TBL.FACIL_CD AND WEBSKY.SPEC_UT_STK_TBL.ITM_CD = WEBSKY.PROD_ITM_TBL.ITM_CD ) AND ( WEBSKY.SPEC_UT_STK_TBL.FACIL_CD = 'M11' OR WEBSKY.SPEC_UT_STK_TBL.FACIL_CD = 'Z11' ) and WEBSKY.SPEC_UT_STK_TBL.ITM_CD not in(SELECT WEBSKY.SDIN_DTL_TBL.ITM_CD FROM WEBSKY.SDIN_DTL_TBL , WEBSKY.PROD_ITM_TBL, WEBSKY.SDIN_TBL, WEBSKY.SDOT_TBL, WEBSKY.FACIL_TBL, WEBSKY.SEC_TBL WHERE ( WEBSKY.SDIN_DTL_TBL.ITM_CD = WEBSKY.PROD_ITM_TBL.ITM_CD AND WEBSKY.SDIN_DTL_TBL.ITM_CD = WEBSKY.PROD_ITM_TBL.ITM_CD AND WEBSKY.SDIN_DTL_TBL.SDIN_NO = WEBSKY.SDIN_TBL.SDIN_NO AND WEBSKY.SDIN_DTL_TBL.SDIN_NO = WEBSKY.SDOT_TBL.SDIN_NO AND WEBSKY.SDOT_TBL.FACIL_CD = WEBSKY.FACIL_TBL.FACIL_CD AND WEBSKY.SDOT_TBL.ISS_SEC_CD = WEBSKY.SEC_TBL.SEC_CD ) AND ( (WEBSKY.SDOT_TBL.FACIL_CD = 'M11' OR WEBSKY.SDOT_TBL.FACIL_CD = 'Z11' OR WEBSKY.SDOT_TBL.FACIL_CD = 'K11') AND WEBSKY.SDIN_TBL.FACIL_CD <> 'C11' AND WEBSKY.SDIN_TBL.FACIL_CD <> 'F12' AND WEBSKY.SDOT_TBL.ISS_INS_DT >= 20070801 ) Group By WEBSKY.SDIN_DTL_TBL.ITM_CD)
表A如果是现在的库存的话,那应该是把B中8月份领的数量先汇总,再加到A中去,就行了。
不知道有没有理解错。
(考虑A中有重复记录)
SELECT A.物料名称,A.数量+B.领用数量
FROM (SELECT 物料名称,SUM(数量) FROM 表A GROUP BY 物料名称) A,
(SELECT 物料名称,SUM(领用数量)领用数量
FROM 表B
WHERE TO_CHAR(领用时间,'YYYYMMDD')>'20070731' GROUP BY 物料名称) B
WHERE A.物料名称=B.物料名称;