多次插入,更新和删除

随机的

我有三张桌子

现在,历史和保留表

到一天结束时,我必须清除整个当前表数据,例如,如果“历史记录”表中已有一个ID,那么我必须查看余额,然后从该表中减去当前余额。

如果balance- currentbalance <0,则从历史记录表中减去余额,使其为零,并在历史记录表中添加新行,并以currentbalance-balance作为余额

如果历史记录表中没有ID并且currentbalance> 0,则将该记录移到保存表中。

如果currentbalance <= 0,则将当前表中的日期更改为第二天。我只需要一个查询就可以了。

如果保留表中有一条记录,请删除该记录并放置最新记录。

每次更新行时,请将DATE列更改为当前日期(与当前表分开)。

当下:

ID      Current_Balance    Date
 1        2000              25-06-2014
 2        1500              25-06-2014
 3        5000              25-06-2014
 2        6000              25-06-2014
 4        -200              25-06-2014

历史:

 ID       Balance           Date
 1        1500             24-06-2014
 2        1600             24-06-2014

暂存表:

 ID       Balance           Date
 3         125             24-06-2014
 4         2000            24-06-2014 

我想要类似Present的结果:

 ID      Current_Balance     Date
 4       -200                26-06-2014

历史:

 Id    Balance              Date
 1     0                    25-06-2014
 1     500                  25-06-2014
 2     100                  25-06-2014           

抓住:

 ID      Balance            Date
 3        5000              25-06-2014
 4        2000              24-06-2014

我已经编写了一些复杂的代码。谁能给我最佳解决方案。

梅迪·洛菲(Mehdi Lotfi)

使用以下查询:

UPDATE Persent
SET current_Balance = 0,
    Date = GETDATE()
OUTPUT Inserted.ID, Deleted.current_Balance, Deleted.Date
INTO #P
FROM History h
WHERE h.Id = Persent.ID
    AND  h.balance - Persent.current_balance < 0


INSERT INTO History (Id, Balance, Date)
SELECT p.Id, p.Current_Balance, p.Date
FROM #P p

MERGE Hold AS Destination
 USING (SELECT * FROM Present WHERE Current_Balance>0) AS Source ON Destination.Id = Source.Id
 WHEN NOT MATCHED THEN INSERT (Id, Balance, Date) VALUES (ID,Current_Balance,Date)
 WHEN MATCHED THEN DELETE


UPDATE Persent
SET Date = DATEADD(DAY, 1, GETDATE())
WHERE Persent.current_balance <= 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

房间关系插入删除更新和排序

来自分类Dev

用于插入更新和删除的存储过程

来自分类Dev

Excel DB连接:插入,更新和删除?

来自分类Dev

在MongoDB中记录插入,更新和删除操作

来自分类Dev

如何在表中插入更新和删除记录

来自分类Dev

使用存储过程进行插入,更新和删除

来自分类Dev

在Phonegap for SQLite中插入,更新和删除问题

来自分类Dev

以可视方式构建DataGridView控件的插入,更新和删除功能

来自分类Dev

EF 6 使用通用方法插入、更新和删除

来自分类Dev

插入更新和删除后的 SQL Server 触发器

来自分类Dev

MySQL挂在更新和插入

来自分类Dev

更新和插入,重复键

来自分类Dev

MySQL更新和插入-随机不会插入

来自分类Dev

如何更新和删除AVPacket?

来自分类Dev

更新和删除特定记录

来自分类Dev

是否可以使用MySQL仅在临时表上授予插入,更新和删除特权?

来自分类Dev

如何从(SQLite)数据库加载的JTable中插入,更新和删除项目

来自分类Dev

Cassandra Java驱动程序:如何报告插入,更新和删除结果?

来自分类Dev

SQL Server监视器从旧版应用程序中插入,更新和删除数据

来自分类Dev

使用vb.net从Sql数据库中插入,更新和删除数据?

来自分类Dev

使用Mongoose从Node从MongoDB中的复杂嵌入式集合中插入,更新和删除

来自分类Dev

定期更新和创建、更新和删除操作的同步

来自分类Dev

oracle在更新和插入时触发

来自分类Dev

Dapper的参数化更新和插入?

来自分类Dev

合并语句以进行更新和插入

来自分类Dev

如何备份更新和删除的帖子

来自分类Dev

使用Liipimaginebundle更新和删除缓存的图像

来自分类Dev

ActiveAndroid更新和从表中删除

来自分类Dev

更新和删除查询以合并记录

Related 相关文章

  1. 1

    房间关系插入删除更新和排序

  2. 2

    用于插入更新和删除的存储过程

  3. 3

    Excel DB连接:插入,更新和删除?

  4. 4

    在MongoDB中记录插入,更新和删除操作

  5. 5

    如何在表中插入更新和删除记录

  6. 6

    使用存储过程进行插入,更新和删除

  7. 7

    在Phonegap for SQLite中插入,更新和删除问题

  8. 8

    以可视方式构建DataGridView控件的插入,更新和删除功能

  9. 9

    EF 6 使用通用方法插入、更新和删除

  10. 10

    插入更新和删除后的 SQL Server 触发器

  11. 11

    MySQL挂在更新和插入

  12. 12

    更新和插入,重复键

  13. 13

    MySQL更新和插入-随机不会插入

  14. 14

    如何更新和删除AVPacket?

  15. 15

    更新和删除特定记录

  16. 16

    是否可以使用MySQL仅在临时表上授予插入,更新和删除特权?

  17. 17

    如何从(SQLite)数据库加载的JTable中插入,更新和删除项目

  18. 18

    Cassandra Java驱动程序:如何报告插入,更新和删除结果?

  19. 19

    SQL Server监视器从旧版应用程序中插入,更新和删除数据

  20. 20

    使用vb.net从Sql数据库中插入,更新和删除数据?

  21. 21

    使用Mongoose从Node从MongoDB中的复杂嵌入式集合中插入,更新和删除

  22. 22

    定期更新和创建、更新和删除操作的同步

  23. 23

    oracle在更新和插入时触发

  24. 24

    Dapper的参数化更新和插入?

  25. 25

    合并语句以进行更新和插入

  26. 26

    如何备份更新和删除的帖子

  27. 27

    使用Liipimaginebundle更新和删除缓存的图像

  28. 28

    ActiveAndroid更新和从表中删除

  29. 29

    更新和删除查询以合并记录

热门标签

归档