怎么做才能有人帮忙 [英] how to do can anyone helpme

查看:61
本文介绍了怎么做才能有人帮忙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任务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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆