选择SQL Server 2008中的上一条记录
情况是这样的:我有一个表选择SQL Server 2008中的上一条记录,sql,sql-server-2008,Sql,Sql Server 2008,情况是这样的:我有一个表myTable,其中包含3列: IDint,identity 组varchar(2),非空 值十进制(18,0),非空 表如下所示: ID GROUP VALUE Prev_Value Result ------------------------------------------ 1 A 20 0 20 2 A 30 20 10 3 A 35
myTable
,其中包含3列:
ID
int,identity
组
varchar(2),非空
值
十进制(18,0),非空
ID GROUP VALUE Prev_Value Result
------------------------------------------
1 A 20 0 20
2 A 30 20 10
3 A 35 30 5
4 B 100 0 100
5 B 150 100 50
6 B 300 200 100
7 C 40 0 40
8 C 60 40 20
9 A 50 35 15
10 A 70 50 20
Prev_值
和Result
列应为自定义列。我需要把它放在视野里。有人能帮忙吗?请非常感谢。这里需要做的要点是将表连接到自身,其中连接条件的一部分是表的连接副本的值列小于原始副本的值列。然后,您可以按原始表中的列进行分组,并从联接表中选择最大值以获得结果:
SELECT t1.id, t1.[Group], t1.Value
, coalesce(MAX(t2.Value),0) As Prev_Value
, t1.Value - coalesce(MAX(t2.Value),0) As Result
FROM MyTable t1
LEFT JOIN MyTable t2 ON t2.[Group] = t1.[Group] and t2.Value < t1.Value
GROUP BY t1.id, t1.[Group], t1.Value
选择t1.id,t1.[Group],t1.Value
,合并(最大值(t2.Value),0)作为上一个值
,t1.值-合并(最大值(t2.值),0)作为结果
来自MyTableT1
左键连接t2上的MyTable t2。[组]=t1。[组]和t2.Value
一旦您可以更新到Sql Server 2012,您还可以利用。您能解释一下“自定义字段”吗?我想他指的是计算字段。请解释一下您用来生成上一个值和结果的规则。我看不到任何模式。prev_值将采用记录的上一个值。如果你看到第二条记录。上一个值是20。取自记录1。ff。基于“组”字段。“结果”字段“值”-“上一个值”。非常感谢。。。你就是那个人!!但是如果在sql 2012上运行它。。行吗?