我有一个名为'Prices的表"以下列
id
key
amount
status
我希望在创建记录时自动设置状态列,但是以这种方式,它首先使用amount列值与列amount比较当前记录,如果当前记录较大,则设置状态*列值为0,否则为1。
假设id
列是一个自动递增的整数,并且您希望根据它们的键值对行进行排序,您可以使用以下SQL查询根据您提到的条件
WITH previous_row AS (
SELECT *,
LAG(amount) OVER (ORDER BY key) AS previous_amount
FROM table
)
UPDATE table
SET status = CASE
WHEN amount > previous_amount THEN 0
ELSE 1
END
FROM previous_row
WHERE table.id = previous_row.id + 1;
CTE被创建为包括来自原始表的列,以及一个额外的previous_amount
列,该列包含来自前一行的amount列的值,按键排序。LAG
窗口函数用于检索previous row's
量值。
如果你能分享样本值或关于表/数据的其他信息,这将有助于完善这个答案。