首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用上面行中的数据更新每一行

用上面行中的数据更新每一行
EN

Stack Overflow用户
提问于 2019-06-20 23:44:34
回答 2查看 84关注 0票数 2

我想要更新我的表中的每一行的值,上面的值取决于一些值。

假设我的表是这样的:

代码语言:javascript
复制
  |storeID|   Date   | Stock  | Medition | Regularized |
    --------------------------------
    |   1   |2019-01-01|  500   |   550    |      1      |
    |   1   |2019-01-02|  500   |    0     |      0      |
    |   1   |2019-01-03|  500   |    0     |      0      |
    |   2   |2019-01-01|  250   |   300    |      1      |
    |   2   |2019-01-02|  250   |   350    |      0      |
    |   2   |2019-01-03|  250   |    0     |      0      |

输出必须如下所示:

代码语言:javascript
复制
|storeID|   Date   | Stock  | Medition | Regularized |
--------------------------------
|   1   |2019-01-01|  500   |   550    |      1      |
|   1   |2019-01-02|  550   |    0     |      0      |
|   1   |2019-01-03|  550   |    0     |      0      |
|   2   |2019-01-01|  250   |   300    |      1      |
|   2   |2019-01-02|  300   |   350    |      0      |
|   2   |2019-01-03|  300   |    0     |      0      |

当一个商店已经被正规化时,它的库存必须是第二天的中介量。

有时已经做了调解,但股票不需要正规化。我尝试了一些关于递归表的东西,并阅读了一些类似问题的帖子(Update record with previous row),但我仍然无法解决我的问题。

想象一下,我有一个装满燃料的油箱。每天我都有销售和投入,坦克的库存也在变化。任何一天,我都可以做一个中介来检查真正的股票(中介)是否与我在“book”(股票)中写的股票匹配,如果它不同,我检查为最后一列(正规化),第二天的股票将是我前一天做的中介。如果我检查最后一列为0,即使我做了中介,股票也会和前一天一样。

感谢你能为我提供的一切帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-06-20 23:55:39

您可以使用CROSS APPLY将表连接到自身。

代码语言:javascript
复制
UPDATE st SET
    stock = u.Medition
FROM SomeTable st
CROSS APPLY( SELECT TOP 1 Medition 
            FROM SomeTable i
            WHERE i.storeID = st.storeID
            AND i.[Date] <= st.[Date]
            AND i.Regularized = 1
            ORDER BY [Date] DESC) u
WHERE st.Regularized = 0;
票数 1
EN

Stack Overflow用户

发布于 2019-06-21 02:15:21

假设每个storeid只有一个正则化行

代码语言:javascript
复制
UPDATE INPUT_TABLE IT  
SET STOCK = ( SELECT MEDICATION FROM INPUT_TABLE ITI WHERE IT.STOREID = ITI.STOREID AND ITI.Regularized =1 )
WHERE IT.Regularized =0

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56689588

复制
相关文章

相似问题

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