2017-04-05 93 views
-1

我有下面提到的查詢,它顯示範圍內也超出範圍的結果。如果P1超出範圍並且P2在範圍內,則它應該顯示P1超出範圍值,並且在P2中它應該保持空白並且在P2情況下如果P2超出範圍並且P1在範圍內,則它應該在P1中顯示空白和P1的價值。具有多個條件的SQL查詢

SELECT DATEANDTIME,[P1],[P2] 
FROM REPORTDATA 
WHERE [P1] < '85' OR [P1] > '95' OR [P2] < '85' OR [P2] > '95' 

我試過預期

此查詢BT沒有工作

預期輸出(Original Image):

+ ------------- + ------ + ------ + 
| Date and Time | Param1 | Param2 | 
|    | Range | Range | 
|    | 35-50 | 70-80 | 
+ ------------- + ------ + ------ + 
| 12:35:00  |  | 82  | 
| 12.36   |  | 65  | 
| 12:37   | 17  | 85  | 
| 12:38   | 52  |  | 
| 12:39   | 25  |  | 
| 14:40   |  | 52  | 
+ ------------- + ------ + ------ + 
+2

怎麼樣,比如:其中85和95之間的P1? – muffi

+0

我真的很抱歉,但我不明白你在問什麼。你能用一些標點符號來提出你的問題嗎? –

+1

這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

回答

0

不知道你是什麼預期,但低於檢查:

SELECT DATEANDTIME,[P1],[P2] 
FROM REPORTDATA 
WHERE ([P1] < '85' OR [P1] > '95') 
    OR ([P2] < '85' OR [P2] > '95') 

或者您可以嘗試使用CASE查詢:

SELECT DATEANDTIME,[P1],[P2], 
    CASE WHEN ([P1] < '85' OR [P1] > '95') OR ([P2] < '85' OR [P2] > '95') THEN 'value out of range' 
     ELSE 'value in range' 
    END AS INFO 
FROM REPORTDATA 

TEST給予正確的輸出:

declare @p1 int = 86 
declare @p2 int = 100 

SELECT getdate(),@p1,@p2, 
    CASE WHEN (@p1 < '85' OR @p1 > '95') OR (@p2 < '85' OR @p2 > '95') THEN 'value out of range' 
     ELSE 'value in range' 
    END AS INFO 
+0

無法正常工作請幫助 –

+0

無法正常工作請幫助 –

+0

「不工作」是什麼意思?任何錯誤或不期望輸出或根本沒有輸出? – PawelCz