首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL循环遍历表记录并与第二个表进行比较

TSQL循环遍历表记录并与第二个表进行比较
EN

Stack Overflow用户
提问于 2010-09-02 20:14:19
回答 1查看 733关注 0票数 2

我有两个临时表,都是由TSQL查询填充的。

临时表包含位置、项目和总库存数量的

临时表B,包含位置、项目、销售订单号和负库存计数。

我想循环遍历表B中的每一项,并从表A中减去负库存计数,在那里位置和项目匹配。一旦库存到达表B中的<=0,我希望将每个订单输出到第三个表中,其中包含位置、项目和销售订单号。

示例表A

代码语言:javascript
复制
Item|Location|Inventory
1    A        10
2    B        20

示例表B

代码语言:javascript
复制
Order|Item|Location|QuanityUsed
ABC  |1   |A       |5
ZYX  |2   |B       |10
DEF  |1   |A       |6

DEF将被输出到表C中,因为在减去ABC订单后,没有足够的库存来填充订单。

我怎样才能做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2010-09-02 20:36:09

您可以使用aubquery来计算正在运行的总计。在外部查询中,可以指定正在运行的总量必须大于总库存:

代码语言:javascript
复制
select  location
,       item
,       [Order]
,       TotalInventory
,       RunningTotal
from    (
        select  [order].location
        ,       [order].item
        ,       [order].[Order]
        ,       (
                select  SUM(inventory)
                from    @a inv
                where   inv.item = [order].item
                        and inv.location = [order].location
                ) as TotalInventory
        ,       (
                select  SUM(QuantityUsed)
                from    @b prevorder
                where   prevorder.item = [order].item
                        and prevorder.location = [order].location
                        and prevorder.[order] <= [order].[order]
                ) as RunningTotal
        from    @b [order]
        ) as OrderExtended
where   TotalInventory < RunningTotal

测试数据:

代码语言:javascript
复制
declare @a table (item int, location char(1), inventory int)
insert into @a select 1, 'A', 10
union all select 2, 'B', 20
declare @b table ([order] char(3), item int, location char(1), QuantityUsed int)
insert into @b select 'ABC', 1, 'A', 5
union all select 'ZYX', 2, 'B', 10
union all select 'DEF', 1, 'A', 6

这些指纹:

代码语言:javascript
复制
location  item  Order  TotalInventory  RunningTotal
A         1     DEF    10              11

因此,订购DEF会导致位置A通过10 - 11 = 1超过其项目1库存。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3630852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档