sql - 在 group by 子句中使用 min 和 max

标签 sql oracle oracle11g

我想要 oracle sql 中的以下输出。

我的表中的数据如下:

id    start_date      end_date      assignment number

1     2.02.2014       15.02.2014    10
2     25.02.2014      30.02.2014    20
3     26.03.2014      04.05.2014    30
4     06.06.2014      31.12.4712    10

我需要使用 group by 进行输出

assignment_number   start_date          end_date

10                  02.02.2014          15.02.2014
10                  06.06.2014          31.12.4712
20                  25.02.2014          30.02.2014
30                  26.03.2014          04.05.2014

我尝试使用 min(start_date) 和 max(end_date) 进行作业 10 ia 的输出为

assignment_number   start_date          end_date
10                  02.02.2014          31.12.4712

但我想要:-

assignment_number   start_date          end_date
10                  02.02.2014          15.02.2014
10                  06.06.2014          31.12.4712

请帮忙

最佳答案

我认为你必须分别计算最小值和最大值,然后将它们合并。尝试这样的事情:

SELECT 
 assignment_number
 , start_date
 , end_date
 FROM 
      (SELECT
                assignment_number
                , start_date
                , end_date
                FROM TABLE
                GROUP BY assignment_number
                HAVING MIN(start_date)

           UNION

           SELECT
                assignment_number
                , start_date
                , end_date
                FROM TABLE
                GROUP BY assignment_number
                HAVING MAX(end_date)
      )
 ORDER BY 
      1 ASC
      , 2 ASC
      , 3 ASC

;

关于sql - 在 group by 子句中使用 min 和 max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932002/

相关文章:

sql - 为什么对 @@rowcount 的两次调用会返回两个不同的值?

php - $wpdb 查询从匹配特定 ID 的列中对 SQL 小数求和

sql - 为什么 SELECT DISTINCT 返回两次相同的值?

java - 代码执行时间非常长

mysql - SQL循环依赖

mysql - 如何在 MySQL 中使用 DATEADD?

sql - 截断Oracle中的表时出现错误

java - 是否可以通过查询获得列中最大输入NUMBER值?

sql - 我们可以动态指定并行度吗?

ruby-on-rails - Ruby - Oci8 - 行类型调用函数不起作用