更新SQL语句并使用(如果存在)

更新SQL语句并使用(如果存在),sql,sql-server,if-statement,sql-update,exists,Sql,Sql Server,If Statement,Sql Update,Exists,我试图从一个表中选择一个值,并将其插入另一个表的特定部分。我有以下sql(mssql 2008) 这总是检索一个数据类型为real的值。我有另一个表,它有两列,一列是日期,旁边是小时,每小时有一个未来两周的条目。格式为2013-03-26 01:00:00.000等。我想将从上述代码中获得的值插入第二个表中,持续24小时(24个条目)。24小时的时间是今天早上6点到明天早上6点 我还有以下测试值为10的代码,只是为了证明代码正确更新了opnda UPDATE [GasNominations].[

我试图从一个表中选择一个值,并将其插入另一个表的特定部分。我有以下sql(mssql 2008)

这总是检索一个数据类型为real的值。我有另一个表,它有两列,一列是日期,旁边是小时,每小时有一个未来两周的条目。格式为2013-03-26 01:00:00.000等。我想将从上述代码中获得的值插入第二个表中,持续24小时(24个条目)。24小时的时间是今天早上6点到明天早上6点

我还有以下测试值为10的代码,只是为了证明代码正确更新了opnda

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”值,但语法不正确。

试试这个

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
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