2013-03-26 50 views
0

我想從一個表中選擇一個值並將其插入另一個表的特定部分。我有以下sql(mssql 2008)更新SQL語句並使用if存在

if exists (select datesubmitted from JADHist where datesubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-1))) 

Begin 

Select JadOPNTotal from JADhist where dateSubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-1)) 

end 

else 

begin 

Select jadopntotal from JADhist where dateSubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-2)) 

end 

這總是檢索一個數據類型爲real的值。我有另外一張桌子,裏面有兩列,一張是小時旁邊的日期,另外兩個小時內有一個入口。格式爲2013-03-26 01:00:00.000等。我想將我從上面的代碼中得到的值插入第二個表中一個24小時的時間段(24項)。 24日的時間將是今天上午6點到明天上午6點。

我也有以下代碼,其中的測試值爲10只是爲了證明代碼正確更新opndata。

UPDATE [GasNominations].[dbo].[OPNData] 
SET 
    [Value] = '10' 
WHERE NomSubmittedDate between DATEADD(HH, 6, DATEDIFF(dd, 0, GETDATE())) 
and DATEADD(HH, 5, DATEDIFF(dd, 0, GETDATE()+1)) 
GO 

我想使用if exists語句替換'10'值,但我不能得到正確的語法。

回答

1

試試這個

declare @total varchar(10) 

if exists (select datesubmitted from JADHist 
where datesubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-1))) 
Begin 
    Select @total = JadOPNTotal from JADhist 
    where dateSubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-1)) 
end 
else 
begin 
    Select @total = jadopntotal from JADhist 
    where dateSubmitted = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()-2)) 
end 

UPDATE [GasNominations].[dbo].[OPNData] 
SET 
    [Value] = @total 
WHERE NomSubmittedDate between DATEADD(HH, 6, DATEDIFF(dd, 0, GETDATE())) 
and DATEADD(HH, 5, DATEDIFF(dd, 0, GETDATE()+1)) 
GO 
+0

感謝一個可行的治療 – Silentbob 2013-03-26 12:53:50