首页 > 解决方案 > 如何根据SQL中其他列的值选择值更大的行

问题描述

假设您有下表:

ID 日期 地区 案例
1 2013-06-01 数控 3
2 2013-06-01 不适用 5
3 2013-06-02 数控 7
4 2013-06-02 不适用 2

仅当给定日期的 NC 病例大于 NA 病例时,我才想选择(日期、地区、病例)。例如,第 3 行和第 4 行满足此条件。

期望的输出:

ID 日期 地区 案例
3 2013-06-02 数控 7
4 2013-06-02 不适用 2

标签: sql

解决方案


您可以Date通过条件聚合获得满足您条件的 s:

SELECT Date
FROM tablename
GROUP BY Date
HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
       MAX(CASE WHEN region = 'NA' THEN Cases END)

使用上述查询作为子查询:

SELECT *
FROM tablename
WHERE Date IN (
  SELECT Date
  FROM tablename
  GROUP BY Date
  HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
         MAX(CASE WHEN region = 'NA' THEN Cases END) 
)

请参阅演示


推荐阅读