0

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

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 的值。我有另一个表,它是 2 列,一个是日期,旁边是小时,接下来的 2 周每个小时都有一个条目。格式为 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”值,但语法不正确。

4

1 回答 1

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
于 2013-03-26T12:26:13.267 回答