access数据库使用adoquery 查询的问题(100)

  • 主题发起人 主题发起人 aynes
  • 开始时间 开始时间
A

aynes

Unregistered / Unconfirmed
GUEST, unregistred user!
有以下2个数据库仓库 ck编号 库存量111 2222 5333 6发货 fh编号 订单量 已发货量111 10 2222 2 0222 3 1333 6 6想到得到的结果是编号 需要生产的量111 6222 0333 0需要生产的量=订单量-已发货量-库存量(汇总同一编号的总订单量 - 总已发货量 -库存量)这条sql语名应该怎么写,其中 fh数据库中有重复编号的数据,要汇总一下。如果需要生产的量是负数那就显示为0,如果作不到,显示为负数也行
 
有没有知道,很急。或是利用 临时表 来完成也行阿。
 
关系数据-----------------------------select t1.编号,t1.订单量-t1.已发货量-isnull(t2.库存量,0) as 需要生产的量from(select 编号,sum(订单量) as 订单量,sum(已发货量) as 已发货量from 发货group by 编号) t1 left join 仓库 t2 on t1.编号=t2.编号order by t1.编号
 
直接用临时表生成来个形象点的select 111 as 编号,2 as 库存量 into #TmpCK insert into #TmpCK values (222,5)insert into #TmpCK values (333,6)select * from #TmpCK --对应ckselect 111 as 编号,10 as 订单量,2 as 已发货量 into #TmpFH insert into #TmpFH values (222,2,0)insert into #TmpFH values (222,3,1)insert into #TmpFH values (333,6,6)select * from #TmpFH --对应FHselect y.编号,case when y.需要生产的量<0 then 0 else y.需要生产的量 end as 需要生产的量 from( select x.编号 as 编号,x.订单量-x.已发货量-#TmpCK.库存量 as 需要生产的量 from #TmpCK, (select 编号,sum(订单量)订单量,sum(已发货量)已发货量 from #TmpFH group by 编号)--查询订单总量和已发总量 x where #TmpCK.编号=x.编号 --查询编号和对应生产量)y --负数置为0
 
太感谢了,现在去试验,晚上来加分
 
to pcluec 使用了你的代码后,提示 "Project Project.exe raised exception class EOleException with message'未指定的错误',Process stopped.我在环境是delphi 7+access 使用 ADOQUERY来作的查询
 
现在发现是 select y.编号,case when y.需要生产的量<0 then 0 else y.需要生产的量 end as 需要生产的量 这一句出错,其他的正确的如果不使用这句的话,查出来的结果是编号 需要生产的量111 6222 -1333 -6想了解一下,select 中 case语句的用法
 
问题解决了,主要原因是在access中不能使用case 语句在sql server中使用case oracle中使用decode access中使用iff参照 pbluec 的答案,最终结果是select y.编号,iif(y.需要生产的量<0,0,y.需要生产的量) as 需要生产的量 from( select x.编号 as 编号,x.订单量-x.已发货量-#TmpCK.库存量 as 需要生产的量 from #TmpCK, (select 编号,sum(订单量) as 订单量,sum(已发货量) as 已发货量 from #TmpFH group by 编号)--查询订单总量和已发总量 x where #TmpCK.编号=x.编号 --查询编号和对应生产量)y --负数置为0
 
多人接受答案了。
 
后退
顶部