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

これは常にデータ型が実数の1つの値を取得します。2列の別のテーブルがあります。1つは日付の横に時間があり、1時間ごとに次の2週間のエントリがあります。形式は2013-03-2601:00:00.000などです。上記のコードから取得した値を2番目のテーブルに24時間(24エントリ)挿入したいと思います。24期間は、今日の午前6時から明日の午前6時までです。

また、コードがopndataを正しく更新することを証明するために、テスト値が10の次のコードもあります。

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

'10'の値をifexistsステートメントに置き換えたいのですが、構文を正しく取得できません。

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 に答える