如何编写不在字段min和max之间的范围内的值的查询

时间:2014-08-21 09:45:04

标签: sql sql-server

我需要检索超出范围的值引用最小列字段和最大字段。 我的sql表中有值字段,最小字段和最大字段。例如,值40超出50到60之间的范围,因此需要显示,与74和37的值相同。

Value   Min   Max

95      85    100
40      50     60
74      60     70
37      50     60

我试过这段代码,但似乎不行。感谢任何建议。

SELECT [value], [Min], [Max] FROM [A].[dbo].[VW_Process] WHERE (VW_Process.Value NOT BETWEEN VW_Process.Min AND VW_Process.Max)

4 个答案:

答案 0 :(得分:1)

SELECT * FROM TABLE WHERE VALUE NOT BETWEEN MIN AND MAX

我知道这是你第一次放入你的OP,但我的repro如下显示它有效

CREATE TABLE T1 
(
VAL INT,
MINVAL INT,
MAXVAL INT
)
INSERT INTO T1 VALUES(95,85,100)
INSERT INTO T1 VALUES(40,50,60)
INSERT INTO T1 VALUES(74,60,70)
INSERT INTO T1 VALUES(37,50,60)

SELECT Val FROM T1 where VAL NOT BETWEEN MINVAL AND MAXVAL

返回3行 - 40,74,37 - 所有都不在MIN和MAX之间,但不返回95,显然介于85和100之间

答案 1 :(得分:1)

如果你的工作不起作用,应该这样做;

SELECT [value], [Min], [Max] 
FROM [A].[dbo].[VW_Process] 
WHERE Value < Min 
AND Value > Max

答案 2 :(得分:1)

试试这个

SELECT [value], [Min], [Max] 
FROM   [A].[dbo].[VW_Process]
WHERE  (Value NOT BETWEEN [Min] AND [Max])

DEMO

答案 3 :(得分:0)

所以,我们不知道你的领域的类型,试试这个:

SELECT value, Min, Max 
FROM   [A].[dbo].[VW_Process]
WHERE  cast(Value as int) NOT BETWEEN cast(Min as int) AND cast(Max as int)