首页 > 解决方案 > 如何在 SQL Server 中使用 while 循环以使用另一个表中的值更新表

问题描述

我有 2 张桌子tbl_salesDatatbl_purchasedata. 我想根据列从表tbl_purchasedata中获取最近的购买价格。购买价格必须在销售日期之前。tbl_salesDatacol_salesdate

此表是 tbl_salesdata,其中必须更新采购价格

此表包括具有采购价格和销售数据的项目的采购数据

我需要基于销售日期的购买价格作为最近的购买日期。

前任。对于item Mouse,销售日期为24-07-2020,最近的购买价格将在销售日期之前,即22-07-2020,因此购买价格为250。输出表如下所示。

输出表

我试过了,但这没有用,因为我是存储过程和其他东西的新手。

Declare @total_Count int 
Declare @row_num int
set @total_Count = (select Count(*) from vw_Final_Data)

set @row_num = 1

while @total_Count < @row_num
begin
    /****Some code here*****/
end

我希望将其创建为存储过程并使用调度程序运行。

请帮忙!

标签: sqlsql-server

解决方案


UPDATE S
SET Purchase_Price=(SELECT TOP 1 Purchase_Price 
                        FROM tbl_purchaseData 
                        WHERE Items=S.Items AND col_purchase_date<S.col_sales_date
                        ORDER BY Purchase_Price ASC)
FROM tbl_salesdata AS S

尽量避免使用光标或while。对 SQL Server 要求很高。并且需要大量的资源。

考虑在 tbl_purchasedata 上触发。


推荐阅读