【问题标题】:How to select distinct date ranges with Oracle SQL如何使用 Oracle SQL 选择不同的日期范围
【发布时间】:2015-11-13 13:12:02
【问题描述】:

我希望从具有以下结构的表中获取具有开始和结束日期的不同行。我不想要具有相同开始和结束月份的重复行。请注意这里的开始和结束日期是 NUMBER 类型,而不是日期。

tbl_app_ranges:
rg_id   start_month   end_month
105     200401        200409    
105     200401        200409    
110     200701        200712    
110     200701        200710     

我想要的是下面的结果集

rg_id   start_month   end_month
105     200401        200409    
110     200701        200712    
110     200701        200710     

我知道这可以通过分析来完成,但不确定如何。有没有办法在纯 SQL 中做到这一点?我需要查询来处理 Oracle 数据库。

【问题讨论】:

  • 使用DISTINCT/UNIQUEGROUP BY rg_id, start_month, end_month

标签: sql oracle


【解决方案1】:
select distinct rgid,start_month,end_month from tbl_app_ranges;

【讨论】:

    【解决方案2】:

    您可以在查询中使用GROUP BY rg_id, start_month, end_month

    【讨论】:

    • DISTINCT 将在内部执行GROUP BY。为答案+1。
    【解决方案3】:

    试试这个:

    SELECT DISTINCT start_month   , end_month 
    FROM tbl_app_ranges;
    

    SQL DISTINCT 子句示例将返回每个唯一的开始月份和结束月份组合。

    【讨论】:

      【解决方案4】:
      select rg_id, start_month, end_month from tbl_app_ranges
      group by end_month, start_month, rg_id
      

      【讨论】:

      • 不需要派生表。
      【解决方案5】:

      你问过,

      我知道这可以通过分析来完成,但不确定如何。

      如果您想在 Analytics 中执行此操作,则可以使用 ROW_NUMBER() 分析函数。

      select rg_id, start_month, end_month from (
      select rg_id,
             start_month,
             end_month,
             ROW_NUMBER() OVER(PARTITION BY rg_id, 
                                            start_month, 
                                            end_month 
                               ORDER BY rg_id) rn        
      from tbl_app_ranges)
      WHERE rn = 1;
      

      查询的工作原理:

      ROW_NUMBERPARTITION BY 子句中指定的每个组分配一个有序的 row_number。排序由ORDER BY 子句负责。 thsi 成为内部子查询,外部查询根据row_number 过滤行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多