对于复杂的业务逻辑,我们可以采用画流程图的方式将整个流程可视化,从而更好地理解和把握,以高效高质地完成编码任务。同样地,对于复杂的查询操作,我们可以先通过表格推演的方式进行思考和分析,帮助我们更好地理清思路,以便更好地设计和编写查询SQL。
下面我们通过实际案例来介绍这个分析过程。
假设我们有一个库存表,其中包含商品id、批号、库存数量等信息。一个需剔除库存表,包含商品id、剔除数量等信息。我们需要逐个批次剔除相应数量的库存。示例数据如下:
库存表
| 商品id | 批号 | 库存数量 |
| g0001 | 01 | 1000 |
| g0001 | 02 | 500 |
| g0001 | 03 | 500 |
| g0002 | 04 | 1000 |
需剔除库存表
| 商品id | 剔除数量 |
| g0001 | 1200 |
| g0002 | 200 |
剔除结果
| 商品id | 批号 | 库存数量 |
| g0001 | 01 | 0 |
| g0001 | 02 | 300 |
| g0001 | 03 | 500 |
| g0002 | 04 | 800 |
为实现剔除库存,可以通过应用程序,也可以通过存储过程。但本案例我们希望通过一个查询来实现,分析过程如下:
先将样例数据录入Excel,为方便分析剔除,将每个商品需剔除库存数据列在后面,同一商品同一剔除数量。这个数据使用左连接可以轻松得到,如下图所示:
然后我们希望得到每个商品按批次累计求和的结果,以清楚掌握各批次剔除库存情况: