sql - 如何在 SQL Server 中使用 while 循环以使用另一个表中的值更新表
问题描述
我有 2 张桌子tbl_salesData
和tbl_purchasedata
. 我想根据列从表tbl_purchasedata
中获取最近的购买价格。购买价格必须在销售日期之前。tbl_salesData
col_salesdate
我需要基于销售日期的购买价格作为最近的购买日期。
前任。对于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
我希望将其创建为存储过程并使用调度程序运行。
请帮忙!
解决方案
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 上触发。
推荐阅读
- pandas - 按日期分隔推文会发出警告
- python - 绘制从事件开始到结束的时间矩形 (yAxis)
- java - 最新版Gson用什么替换StringMap
- python - Pandas Dataframe TypeError: translate() 只接受一个参数(给定 2 个)
- tensorflow - ValueError:为ones_1:0指定的形状不变量与循环变量的初始形状不兼容
- adobe - 如何在 Adobe After Effects CS4 中应用图像过渡?
- commit - 执行回滚指令后,我的表数据不会返回
- android - Leanplum 与 GCM 和 FCM
- javascript - 在 View Angular 5 中使用 JS 对象值
- styles - OpenLayers 仅将样式应用于道路的一部分