2016-03-02 136 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 
相關問題