根据同一表中另一列的值更新表中的列

问题描述 投票:0回答:1

我正在尝试更新下表中的

order_date
列。要求如下:对于每个
Med_Number
order_date
必须是最早/初始的
transaction_Date

例如

Med_number = M001
order_date
必须是 03/02/2019。

更新前的表格:

Table before update.

我尝试使用这样的更新语句:

UPDATE Products.audit
SET Order_date = Transaction_Date

通过此查询,每一行将具有相同的订单日期和交易日期。不去

然后我使用以下查询手动更新每一行

UPDATE Products.audit
SET Order_date = '03/02/2019'
WHERE med_key = '13216584-M001-R1' 
   OR med_Key = '13216584-M001-R2'

我必须对每个

Med_Nunber
重复一遍,有效,但很耗时,如果我只有很少的记录,就会这样做。

我的表有大约70000个不同的

Med_number
,所以我无法手动更新表

我需要有关更新

order_date
的查询帮助。 TIA

Table after manual update

sql sorting stored-procedures sql-update etl
1个回答
0
投票

您可以使用可更新的 CTE。

WITH cte AS (
    SELECT *,
      MIN(Transaction_Date) OVER (PARTITION BY Med_Number) AS MinTranDate
    FROM Products.audit
)
UPDATE cte
SET Order_date = MinTranDate;
© www.soinside.com 2019 - 2024. All rights reserved.