更新 SQL 语句并使用 if 存在
Posted
技术标签:
【中文标题】更新 SQL 语句并使用 if 存在【英文标题】:update SQL statement and using if exists 【发布时间】:2013-03-26 12:02:10 【问题描述】:我正在尝试从一个表中选择一个值并将其插入到另一个表的特定部分。我有以下 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”值,但语法不正确。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于更新 SQL 语句并使用 if 存在的主要内容,如果未能解决你的问题,请参考以下文章