怎么做才能有人帮忙 [英] how to do can anyone helpme
本文介绍了怎么做才能有人帮忙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任务1
输入输出
当前上一个
1001空
2331 7808 -6807
2312 8965 -6634
3213 5557 -3245
8768 3453 -240
8857 6577 2191
Null 6778 2079
注:第一排 - 第二栏第二排
添加了代码块 - OriginalGriff [/ edit]
解决方案
除了Mycroft Halmes帖子,你可能需要这个结果。
DECLARE @ Tbl TABLE (ID INT ,Value1 INT ,value2 INT ,结果 INT )
INSERT @ Tbl (ID,Value1,value2)
SELECT 1 , 1001 , NULL
UNION SELECT 2 , 2331 , 7808
UNION SELECT 3 , 2312 , 8965
UNION SELECT 4 , 3213 , 5557
UNION SELECT 5 , 8768 , 34 53
UNION SELECT 6 , 8857 , 6577
UNION SELECT 7 , NULL , 6778
声明 @ID as INT
声明 @ Value1 as INT
声明 @ Value2 as INT
声明 @ result as INT
声明 @ tmp as INT = NULL
声明 MY_data CURSOR FOR
从 @中选择 ID,Value1,Value2 Tbl
OPEN MY_data
FETCH NEXT < span class =code-keyword> FROM MY_data INTO @ ID , @ Value1 , @ value2
WHILE < span class =code-systemcall> @@ FETCH_STATUS = 0
BEGIN
update @ Tbl
设置结果= @ tmp- @ Value2
WHere 标识= @ ID
set @ tmp = @ value1
FETCH NEXT FROM MY_data INTO @ ID , @ value1 , @ value2
结束
CLOSE MY_data
DEALLOCATE MY_data
选择 * 来自 @ Tbl
试试这个,你需要一个行标识符,就在那里你可能需要使用ROW_NUMBER()。
DECLARE @ Tbl TABLE (ID INT ,Value1 INT ,value2 INT )
INSERT @ Tbl
SELECT 1 , 1001 , 0
UNION SELECT 2 , 2331 , 7808
UNION SELECT 3 , 2312 , 8965
UNION SELECT 4 , 3213 , 5557
UNION SELECT 5 , 8768 , 3453
UNION SELECT 6 , 8857 , 6577
UNION SELECT 7 , 0 , 6778
SELECT *,t.value1 - t2.Value2结果
FROM @ Tbl AS t
LEFT JOIN @ Tbl AS t2 ON t.ID = t2.ID - 1 跨度>
Task 1
Input Out Put
Current Previous
1001 Null
2331 7808 -6807
2312 8965 -6634
3213 5557 -3245
8768 3453 -240
8857 6577 2191
Null 6778 2079
Note : First Row - Second row in second column
[edit]Code block added - OriginalGriff[/edit]
解决方案
In addition to Mycroft Halmes post you may required this result.
DECLARE @Tbl TABLE(ID INT , Value1 INT ,value2 INT,Result INT) INSERT @Tbl (ID,Value1,value2) SELECT 1, 1001,NULL UNION SELECT 2,2331, 7808 UNION SELECT 3,2312, 8965 UNION SELECT 4,3213, 5557 UNION SELECT 5,8768, 3453 UNION SELECT 6,8857, 6577 UNION SELECT 7,NULL, 6778 Declare @ID as INT Declare @Value1 as INT Declare @Value2 as INT Declare @result as INT Declare @tmp as INT=NULL Declare MY_data CURSOR FOR Select ID,Value1,Value2 from @Tbl OPEN MY_data FETCH NEXT FROM MY_data INTO @ID,@Value1,@value2 WHILE @@FETCH_STATUS = 0 BEGIN update @Tbl Set result=@tmp-@Value2 WHere Id=@ID set @tmp=@value1 FETCH NEXT FROM MY_data INTO @ID, @value1,@value2 END CLOSE MY_data DEALLOCATE MY_data select * from @Tbl
Try this, you need a row identifier, that is where you may need to use ROW_NUMBER().
DECLARE @Tbl TABLE(ID INT , Value1 INT ,value2 INT) INSERT @Tbl SELECT 1, 1001,0 UNION SELECT 2,2331, 7808 UNION SELECT 3,2312, 8965 UNION SELECT 4,3213, 5557 UNION SELECT 5,8768, 3453 UNION SELECT 6,8857, 6577 UNION SELECT 7,0, 6778 SELECT *, t.value1 - t2.Value2 Result FROM @Tbl AS t LEFT JOIN @Tbl AS t2 ON t.ID = t2.ID - 1
这篇关于怎么做才能有人帮忙的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文