我是SQL Server新手。我在Azure中使用SQL Server,我正在寻找在输入新记录时完成设置状态字段的最佳方法。
我有以下数据:
我需要设置\计算Quote_Status字段。
新版本定义为Quote_System,Quote_Date和Quote_ID都相等。
添加新版本时,Quote_Status应如下所示:
我已经考虑了触发器和计算字段,但我从来没有做过这样的事情,也不知道如何启动SQL。谢谢!
答案 0 :(得分:1)
如果可以动态计算列,则可以使用以下内容:
SystemB
基本上,对于(Quote_System,Quote_Date,Quote_ID)的每个分组,我都按降序枚举版本。有了它,第一个(即with cte as (
select *,
row_number() over (
partition by Quote_System, Quote_Date, Quote_ID
order by QuoteVersion desc
) as rn
from dbo.yourTable
)
select *, case when rn = 1 then 'Open' else 'Versioned' end as Quote_Status
from cte;
)是开放的,而其余的是版本。在实际使用中,我会在实际选择中添加where子句,以便它有合理的机会表现良好。
如果你需要持久化并且Quote_Version单调增加,我宁愿在存储过程中这样做。像这样:
rn = 1
如果你真的需要一个触发器,我也可以想出类似的东西。但这是我最不理想的解决方案。