我需要在时间轴上进行分组。这意味着,所有内容都应在同一组中(C,I,“ A”)。如果已更改“ A”的值,则它是一个新组。
我已经尝试了许多Oracle的想法,例如分析功能和分组;但是我没有达到要求的结果。
无可用代码
原始数据:
C I A FROM_DATE TO_DATE 1 1 4 01.08.19 00:00 05.08.19 00:00 1 1 4 06.08.19 00:00 10.08.19 00:00 1 1 6 11.08.19 00:00 17.08.19 00:00 1 1 5 18.08.19 00:00 21.08.19 00:00 1 1 5 22.08.19 00:00 28.08.19 00:00 1 1 5 29.08.19 00:00 05.09.19 00:00 1 1 4 06.09.19 00:00 31.12.99 00:00
预期(中级):
C I A FROM_DATE TO_DATE GROUP_ID 1 1 4 01.08.19 00:00 05.08.19 00:00 1 1 1 4 06.08.19 00:00 10.08.19 00:00 1 1 1 6 11.08.19 00:00 17.08.19 00:00 2 1 1 5 18.08.19 00:00 21.08.19 00:00 3 1 1 5 22.08.19 00:00 28.08.19 00:00 3 1 1 5 29.08.19 00:00 05.09.19 00:00 3 1 1 4 06.09.19 00:00 31.12.99 00:00 4
预期(最终):
C I A FROM_DATE TO_DATE 1 1 4 01.08.19 00:00 10.08.19 00:00 1 1 6 11.08.19 00:00 17.08.19 00:00 1 1 5 18.08.19 00:00 05.09.19 00:00 1 1 4 06.09.19 00:00 31.12.99 00:00
答案 0 :(得分:2)
您可以使用Tabibitosan:
public barChartData: ChartDataSets[] = [{data: []}]; // this is user output data
public barChartLabels: Label[] = []; // this is user input data
public barChartOptions : (ChartOptions & { annotation: any }) = {
responsive: true,
scales: {
xAxes: [
{
id: 'years',
position: 'left',
}
],
yAxes: [
{
id: 'points',
position: 'right',
}
]
},
annotation: {
annotations: [
{
type: 'line',
mode: 'vertical'
},
],
},
};
组号不完全是您所拥有的,但它是中间结果,并不重要。
然后将其用于聚合:
select t.*,
row_number() over (order by from_date)
- row_number() over (partition by c, i, a order by from_date) as grp
from your_table t;
C I A FROM_DATE TO_DATE GRP
---------- ---------- ---------- ---------- ---------- ----------
1 1 4 2019-08-01 2019-08-05 0
1 1 4 2019-08-06 2019-08-10 0
1 1 6 2019-08-11 2019-08-17 2
1 1 5 2019-08-18 2019-08-21 3
1 1 5 2019-08-22 2019-08-28 3
1 1 5 2019-08-29 2019-09-05 3
1 1 4 2019-09-06 1999-12-31 4