仅使用DB2或Oracle的SQL表而不是过程语言
Name Date Amt Reason
----- ----- ------- ---------
A 10 Nov 200 Overdue
A 20 Nov 500 EMT
B 6 Dec 300 Overdue
B 3 Dec 100 EMT
结果类似于重复项中的唯一名称,最小日期,最大金额,如果过期,任何一个重复项必须打印过期如果不打印其他部分。见结果表,如下所示
Name Date Amt Reason
----- ------ ----- --------
A 10 Nov 500 Overdue
B 3 Dec 300 Overdue
答案 0 :(得分:0)
with input as (
select 'A' name , '10 Nov' "date", 200 amt, 'Overdue' reason from dual
union all select 'A', '20 Nov', 500, 'EMT' from dual
union all select 'B', '6 Dec', 300, 'Overdue' from dual
union all select 'B', '3 Dec', 100, 'EMT' from dual)
select name, min("date") "date", max(amt),
substr(max(decode(reason, 'Overdue', '2'||reason, '1'||reason) ), 2) reason
from input
group by name
您可以使用以下日期:
min(to_date(decode(length("date"), 5, '0', '')||"date", 'dd MON'))
而不是min("date")