2013-03-01 128 views
1

我有一個查詢,它返回行創建時的最新日期。日期爲「2010-02-03」SQL:選定的日期超出範圍

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語句,所以如果我選擇不同的日期,比MAX(時間戳)更大然後返回一個錯誤信息。我嘗試的方式如下:

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' 

不幸的是,這種方式查詢不起作用。關於我應該在哪裏更改代碼的任何建議? 謝謝!

回答

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' 
+0

謝謝你的快速回答。我正在執行查詢。只要它返回一些內容,我會讓你知道。 – Farkiba 2013-03-01 09:24:02