SQL - 具有 Group By 功能的 CASE 语句

标签 sql

我编写了这个查询并尝试按“D”进行分组,但它不起作用。有什么帮助吗??

(select hr_id, max(delivery_dt)as maxd,
  (CASE 
    WHEN max(delivery_dt) > '11-may-2010' then '< 6 MO'
    WHEN max(delivery_dt) > '11-may-2004' and  max(delivery_dt) < '11-may-2010'   then '7 - 78 MO'
    WHEN max(delivery_dt) > '11-nov-1999' and  max(delivery_dt) < '11-april-2004' then '79 - 132 MO'
    ELSE '> 133 MO' END) D
from INDIVIDUAL_VE_TB 
where hr_id in (select distinct hr_id from MODEL_SC_TB b where b.model_id='200')
Group by hr_id)

我得到了这个结果

HR                DATE               D
2000001076        4/22/1994         > 133 MO
2000004986        12/13/2004        7 - 78 MO
2000003382        12/13/2003        7 - 78 MO

这是按 HR 分组,我也尝试按 D 分组,但不起作用 我将 D 添加到组中 按 hr_id、D 分组

任何帮助都会很棒!

提前谢谢

最佳答案

你可以尝试:

Select hr_id, max(maxd), D
from
    (select hr_id, max(delivery_dt)as maxd,
      (CASE 
        WHEN max(delivery_dt) > '11-may-2010' then '< 6 MO'
        WHEN max(delivery_dt) > '11-may-2004' and  max(delivery_dt) < '11-may-2010'   then '7 - 78 MO'
        WHEN max(delivery_dt) > '11-nov-1999' and  max(delivery_dt) < '11-april-2004' then '79 - 132 MO'
        ELSE '> 133 MO' END) D
    from INDIVIDUAL_VE_TB 
    where hr_id in (select distinct hr_id from MODEL_SC_TB b where b.model_id='200')
    Group by hr_id)
group by D, hr_id

关于SQL - 具有 Group By 功能的 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216416/

相关文章:

python - Pandas 加入具有不同名称的列

sql - 自动截断分配的字符串到字段的长度?

sql - 为什么分解这个相关子查询 vaSTLy 可以提高性能?

mysql - Rails Active Record 查询计数多个关系

sql 在子集中创建序列号 - apache derby

sql - 性能差异 : select top 1 order by vs. select min(val)

mysql - 如何优化 sql 查询以更快地处理大数据?

sql - 在 NLTK 中将英语转换为 SQL

sql - 在没有动态 SQL 的情况下对多个表运行相同的查询

sql - 另一个复杂的 MySQL 排序