日期:2014-05-18 浏览次数:20545 次
select * from ( select 区域,购货单位名称,订单ID,'' 配送单号,产品名称,件数,'0'配送件数,'0' 出库件数,''出库单号,出货仓库,订单日期,''出库日期 from 订单表 where 订单id not in (select distinct 订单ID from 出库表) union select b.区域,b.购货单位名称,b.订单ID,c.配送单号,b.产品名称,b.件数,c.配送件数,isnull(c.出库件数,b.出库件数)出库件数,isnull(c.出库单号,b.出库单号)出库单号,isnull(b.出货仓库,c.出货仓库)出货仓库,b.订单日期,isnull (b.出库日期, c.出库日期)出库日期 from( select a.区域,a.购货单位名称,a.订单ID,''配送单号,a.产品名称,a.件数,'0'配送件数,c. 出库件数,isnull(c.出货仓库,a.出货仓库)出货仓库,c.出库单号,a.订单日期,c.出库日期 from( select 区域,购货单位名称,订单ID,产品名称,件数,订单日期,出货仓库 from 订单表 )a full join (select 订单ID,配送单号,产品名称,件数 出库件数,出货仓库,出库单号,出库日期 from 出库表 where 配送单号 is null)c on a.订单ID=c.订单ID AND a.产品名称=c.产品名称 )b full join(select a.区域,a.购货单位名称,a.订单ID,s.配送单号,a.产品名称,a.件数,s.配送件数,s.出库件数,s.出货仓库,s.出库单号,a.订单日期,s.出库日期 from(select 区域,购货单位名称,订单ID,产品名称,件数,订单日期,出货仓库 from 订单表)a full join( select 区域,购货单位名称,订单ID,配送单号,产品名称,件数,配送件数,出库件数,出货仓库,出库单号,订单日期,出库日期 from(select a.区域,a.购货单位名称,a.订单ID,a.产品名称,a.件数,c.配送单号,b. 件数 配送件数,c.出库件数,isnull (b.起点,c.出货仓库)出货仓库, c.出库单号,c.出库日期,a.订单日期 from(select 区域,购货单位名称,订单ID,产品名称,件数,订单日期,出货仓库 from 订单表)a full join 配送表 b on a.订单ID=b.订单ID AND a.产品名称=b.产品名称 full join (select 订单ID,配送单号,产品名称,件数 出库件数,出货仓库,出库单号,出库日期 from 出库表 )c on a.订单ID=c.订单ID AND a.产品名称=c.产品名称 and isnull(b.配送单号,'')= isnull(c.配送单号,'') and isnull (b.起点,'')=isnull (c.出货仓库,''))b )s on a.订单ID=s.订单ID AND a.产品名称=s.产品名称 )c on b.订单ID=c.订单ID AND b.产品名称=c.产品名称 )d where 订单日期 between '2012-02-01' and '2012-02-04'
视图 索引 等高手...
------解决方案--------------------
貌似一共就 订单表,出库表,配送表 三个表吧?
这是在做什么?嵌套来嵌套去的我都看晕了
------解决方案--------------------
SELECT 区域 , 购货单位名称 , 订单ID , '' 配送单号 , 产品名称 , 件数 , '0' 配送件数 , '0' 出库件数 , '' 出库单号 , 出货仓库 , 订单日期 , '' 出库日期 FROM 订单表 WHERE 订单id NOT IN ( SELECT DISTINCT 订单ID FROM 出库表 )
------解决方案--------------------
有些嵌套是不是多余了?
------解决方案--------------------
select * from 订单表 a full join 出库表 b on a.关系字段=b.关系字段 --and 其他关联字段 full join 配送表 c on a.关系字段=c.关系字段 --and 其他关联字段 --where 把abc的所有条件都放到这里
------解决方案--------------------
code=SQL]那就分开来,用临时Table。一层一层的写出来。
insert into #table1
select 区域,购货单位名称,订单ID,'' 配送单号,产品名称,件数,'0'配送件数,'0' 出库件数,''出库单号,出货仓库,订单日期,''出库日期
from 订单表 where 订单id not in (select distinct 订单ID from 出库表)
......[[/code]
------解决方案--------------------
直接给出表结构和部分数据,以及需要的结果。不然这个代码看的很累啊。
------解决方案--------------------
创建临时表吧 看着很累
------解决方案--------------------
你给出表结构的定义和说明吧,真还没搞清楚你要干什么,直觉是你对数据库设计的四大准则的理解有偏差、对应用没搞清楚,不会有表需要这么来用的。
------解决方案--------------------