1

行が作成された最新の日付を返すクエリがあります。日付は「2010-02-03」

SELECT * FROM
[LinkedServer].[Server].[Table]
WHERE [TimeStamp]= (SELECT MAX(TimeStamp)
FROM [LinkedServer].[Server].[Table]
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist"
WHERE LOCATION = 'Europe' AND COUNTRY = 'England'))

このクエリは問題なく動作しますが、IF ELSE ステートメントを挿入したいので、IF I SELECT で MAX(TimeStamp) より大きい別の日付を選択すると、エラー メッセージが返されます。私が試した方法は次のとおりです。

IF MAX(TimeStamp) > '2011-02-15'
BEGIN

SELECT * FROM
[LinkedServer].[Server].[Table]
WHERE [TimeStamp]= (SELECT MAX(TimeStamp)
FROM [LinkedServer].[Server].[Table]
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist"
WHERE LOCATION = 'Europe' AND COUNTRY = 'England'))

END
ELSE 
PRINT 'Date out of range'

残念ながら、この方法ではクエリは機能しません。コードをどこで変更する必要があるかについての提案はありますか? ありがとうございました!

4

1 に答える 1

1
Declare @MaxTS datetime

SELECT @MaxTS=MAX(TimeStamp)
FROM [LinkedServer].[Server].[Table]
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist"
WHERE LOCATION = 'Europe' AND COUNTRY = 'England')

IF @MaxTS > '20110215'
BEGIN

SELECT * FROM
[LinkedServer].[Server].[Table]
WHERE [TimeStamp]= @MaxTS

END
ELSE 
PRINT 'Date out of range'
于 2013-03-01T09:13:02.310 に答える