读书人

怎么高效查询SQL语句

发布时间: 2012-11-19 10:18:51 作者: rapoo

如何高效查询SQL语句
表A
商品 日期 序列号 方式 仓库
001 2011-1-1 0000001 入库 A
001 2011-1-1 0000002 入库 A
001 2011-1-1 0000003 入库 A
001 2011-1-1 0000004 入库 A
001 2011-1-1 0000005 入库 A
001 2011-1-1 0000006 入库 A

表B
商品 日期 序列号 方式 仓库
001 2011-2-1 0000001 采购退库 A

表C
商品 日期 序列号 方式 仓库
001 2011-5-1 0000003 销售出库 A
001 2011-7-1 0000003 销售出库 A
001 2011-5-1 0000004 销售出库 A




表D
商品 日期 序列号 方式 仓库
001 2011-6-1 0000003 销售退库 A


在库:是入库的时候;销售退库 后也在库存
没有在库是:采购退库和销售出库

现在的问题是如何实现高效查询每个串号的状态以及是否在库








[解决办法]

SQL code
select a.*,(case when b.序列号 is not null then 销售退库    when c.序列号 is not null then 销售出库else 在库 end)from 表A a left join 表B b on a.序列号=b.序列号left join 表C c on a.序列号=c.序列号
[解决办法]
前提:所有的销售出库、销售退库、采购退库都是基于“采购入库”主表数据;
我也觉得所有的后续分析都是基于2楼的业务逻辑进行处理,至于性能我也不太清楚哈,只知道left join是比较耗费性能的,同时需要考虑时间参数、数据异常等因素。
探讨
SQL code
select a.*,
(case when b.序列号 is not null then 销售退库
when c.序列号 is not null then 销售出库
else 在库 end)
from 表A a left join 表B b on a.序列号=b.序列号
left join 表C c on a.序列号=c.序列号

读书人网 >SQL Server

热点推荐