自动设置创建时记录的值列



我有一个名为'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量值。

如果你能分享样本值或关于表/数据的其他信息,这将有助于完善这个答案。

相关内容

  • 没有找到相关文章

最新更新