2016-03-02 105 views
0

如何从一个临时表复制到另一个临时表的条件基础上,然后如何从该粘贴表中检索?从条件库中的一个临时表复制到另一个临时表?

我尝试像下面,但从两个条件中检索,因为我想粘贴表数据选择,我从来没有得到。

alter procedure Get_LoginLogutDetails 
as 
begin 
DECLARE @cmd AS NVARCHAR(max) 
DECLARE @cmdOriginal AS NVARCHAR(max) 
CREATE TABLE #result 
( 
LoggedOutTime datetime 
) 

CREATE TABLE #OriginalResult 
( 
Duration varchar(100) 
) 

declare @loggedOutTime  varchar(20) 


SET @cmd ='select LoggedOutTime from LastLoggedInDetails' 
Insert into #result 
EXEC(@cmd) 

declare result_cursor cursor for 
SELECT LoggedOutTime 
from #result 
where LoggedOutTime is null 

OPEN result_cursor 
FETCH NEXT FROM result_cursor INTO @loggedOutTime 

WHILE @@FETCH_STATUS = 0  
BEGIN 


if(@loggedOutTime is null) 
begin 

select 'Running..' 
Insert into #OriginalResult 
EXEC(@cmd) 
end 

else if(@loggedOutTime is not null) 
begin 

select LoggedOutTime from #result 
Insert into #OriginalResult 
EXEC(@cmd) 
end 


FETCH NEXT FROM result_cursor INTO @loggedOutTime 
END 

select * from #OriginalResult 
end 
+0

使用的标记dbms。这根本不像ANSI SQL。 – jarlh

+0

请尝试从更高的层面解释你正在努力完成的任务。通常使用游标是一个坏主意。 – Jeremy

回答

1

好的,所以我读了你的脚本,并试图找出你正在尝试做什么。它看起来像是有可能在有时间的情况下尝试获取LoggedOutTimes,如果没有注销时间,您希望将结果“Running ...”插入到临时表中。

SELECT  ISNULL(LoggedOutTime, 'Running...') 
INTO  #OriginalResult 
FROM  LastLoggedInDetails 

这给你一个临时表与上述情况。不确定LoggedOutTime的数据类型,您可能需要将其转换为nvarchar。

您的原始问题没有多大意义,您应该尝试对其进行重新说明以获得更准确的帮助。

0

对不起,我所有的不好解释,但我终于达到了我的需要。 我想要像nelow。

select LastLoggedInDetails.LoggedInTime,case 

when LastLoggedInDetails.LoggedOutTime is not null then CONVERT(VARCHAR(100),DATEDIFF (hour,LastLoggedInDetails.LoggedInTime ,LastLoggedInDetails.LoggedOutTime))+' Hours '+ 
CONVERT(VARCHAR(100),DATEDIFF (minute,LastLoggedInDetails.LoggedInTime ,LastLoggedInDetails.LoggedOutTime)%60) +' Minutes' 

when LastLoggedInDetails.LoggedOutTime is null then 'Running...' 
end 
from dbo.LastLoggedInDetails 
相关问题