我对 Oracle SQL 非常陌生,尤其是在 Pentaho 报告生成器中。它可以让你做一些事情并阻止其他人。PL/SQL 不可用,因此我必须在查询中执行此操作。
我需要能够为他们MIN(service_date)
和他们的MAX(service_date)
. 下面是表格数据和我想得到的结果。
表格数据
client_id | service_date | other_stuff
---------------------------------------
1 | 2/24/2010 | Bob
1 | 3/23/2010 | Jane
1 | 4/23/2010 | Sam
2 | 1/1/2000 | Julie
2 | 2/2/2000 | Tina
3 | 3/28/2005 | D'Shaun
3 | 4/27/2005 | Leisha
3 | 5/29/2005 | Tonay
Run Code Online (Sandbox Code Playgroud)
结果数据
client_id | service_date | other_stuff
--------------------------------------
1 | 2/24/2010 | Bob
1 | 4/23/2010 | Sam
2 | 1/1/2000 | Julie
2 | 2/2/2000 | Tina
3 | 3/28/2005 | D'Shaun
3 | 5/29/2005 | Tonay
Run Code Online (Sandbox Code Playgroud)
小智 9
可能还有其他更好的方法,但以下对您有用吗?
select client_id
,service_date
,other_stuff
from (
select client_id
,service_date
,other_stuff
,row_number() over (partition by client_id order by service_date) rn_min
,row_number() over (partition by client_id order by service_date desc) rn_max
from tbl
)
where (rn_min = 1 OR rn_max = 1) ;
Run Code Online (Sandbox Code Playgroud)