2017-04-05 150 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