来源:
Seq Amount 1 50 2 48 3 46 4 40 5 45 6 43 7 39
这就是我想要的,
当当前行中的金额大于最后一个金额时,它会变为前一个金额
例如,在行5中,行4中的量> 45>,然后将其改变为40
在第6行中,更新的行5中的数量43> 40,然后将其更改为40
这是预期的结果:
Seq Amount 1 50 2 48 3 46 4 40 5 40 6 40 7 39
我目前正在使用滞后(金额)(按顺序排列)
但是,结果不正确。我想我需要一个循环脚本,但我不知道该怎么做,请帮忙。
谢谢!
答案 0 :(得分:0)
这是一个更通用的版本,不需要LAG
:
MS SQL Server 2008架构设置:
CREATE TABLE Table1
([Seq] int, [Amount] int)
;
INSERT INTO Table1
([Seq], [Amount])
VALUES
(1, 50),
(2, 48),
(3, 46),
(4, 40),
(5, 45),
(6, 43),
(7, 39)
;
查询1 :
select t1.Seq, case when t1.Amount < t2.Amount or t2.Amount is null then t1.Amount else t2.Amount end as Value
from Table1 t1
left join Table1 t2 on t2.Seq = t1.Seq - 1
order by t1.Seq
<强> Results 强>:
| Seq | Value |
|-----|-------|
| 1 | 50 |
| 2 | 48 |
| 3 | 46 |
| 4 | 40 |
| 5 | 40 |
| 6 | 43 |
| 7 | 39 |
答案 1 :(得分:0)
使用RedFilter在while循环中提供的逻辑更新列,直到值@@ rowcount = 0