日期:2014-05-17  浏览次数:20978 次

帮忙写个sql
表a:   物料名称,数量。表b:物料名称,领用数量,领用时间
请帮忙写个sql语句查出8月份之前未被领用的物料名称和数量,这个怎么写啊?


------解决方案--------------------
select name,cnt from a where not exists
(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;
------解决方案--------------------
select a.name,(a.count-temp.consum) lefted from a,(select sum(usecount) consum,name from b where usedate < to_date( '31-07-2007 ', 'dd-mm-yyyy ') group by b.name) temp where a.name = temp.name;
------解决方案--------------------
Select 物料名称 From A
Minus
Select 物料名称 From B Where 领用时间 <  '2007-08-01 '

------解决方案--------------------
这两个表好像有问题啊,看不懂你什么意思。
表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.物料名称;