我想要 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/