Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中特定实例的列比较_Sql_Sql Server - Fatal编程技术网

SQL中特定实例的列比较

SQL中特定实例的列比较,sql,sql-server,Sql,Sql Server,我有一个样本数据,我想验证一个特定实例的Age\u Low是否小于Age\u High ID NAME Age_Low Age_High 1 ABC 50 100 1 ABC 25 60 1 ABC 75 90 2 XYZ 20 40 2 XYZ 50 20 例如,对于上面的数据,ABC的每个实例的Ag

我有一个样本数据,我想验证一个特定实例的Age\u Low是否小于Age\u High

  ID   NAME   Age_Low   Age_High
  1    ABC     50         100
  1    ABC     25          60
  1    ABC     75          90
  2    XYZ     20          40
  2    XYZ     50          20
例如,对于上面的数据,ABC的每个实例的Age_Low应该小于Age_High,如果不是,那么它应该返回结果

我尝试了以下查询,但它返回了所有ABC行,因为在某些行中,Age\u Low高于Age\u High

  SELECT *
  FROM tablename
  WHERE Age_Low > Age_High
你似乎想要:

select t.*
from table t
where not exists (select 1 from table t1 where t1.id = t.id and t1.name = t.name and t1.Age_Low < t.Age_High);
你似乎想要:

select t.*
from table t
where not exists (select 1 from table t1 where t1.id = t.id and t1.name = t.name and t1.Age_Low < t.Age_High);
试试这个:

select * from t where Age_Low > 
(

select min(Age_High) from t where NAME='ABC'
)
试试这个:

select * from t where Age_Low > 
(

select min(Age_High) from t where NAME='ABC'
)

如果我正确理解您的问题,您希望为该ID值选择Age_Low大于Age_High最小值的行。如果是,此查询将执行您想要的操作:

SELECT *
FROM tablename t
WHERE Age_Low > (SELECT MIN(Age_High)
                 FROM tablename t1
                 WHERE t1.ID = t.ID)
输出:

ID  NAME    Age_Low     Age_High
1   ABC     75          90
2   XYZ     50          20

如果我正确理解您的问题,您希望为该ID值选择Age_Low大于Age_High最小值的行。如果是,此查询将执行您想要的操作:

SELECT *
FROM tablename t
WHERE Age_Low > (SELECT MIN(Age_High)
                 FROM tablename t1
                 WHERE t1.ID = t.ID)
输出:

ID  NAME    Age_Low     Age_High
1   ABC     75          90
2   XYZ     50          20

您只想将名称或整行作为结果吗?@jarlh整行作为结果在您的样本数据中,没有一行的年龄低>年龄高,这会导致样本数据不好。我认为不存在。@Jeroenmoster,Nick我修改了我的样本数据。。谢谢您的建议。您想要的是名称还是整行作为结果?@jarlh整行作为结果在您的样本数据中,没有一行的年龄低>年龄高,这会导致样本数据不好。我同意不存在。@Jeroenmoster,Nick我修改了我的样本数据。。谢谢你的建议。谢谢你的帮助@Nick!谢谢你的帮助@Nick!虽然此代码可以回答问题,但最好解释如何解决问题,并提供代码作为示例或参考。只有代码的答案可能会令人困惑,并且缺乏上下文。虽然此代码可能会回答问题,但最好解释如何解决问题,并提供代码作为示例或参考。只有代码的答案可能会令人困惑,并且缺乏上下文。