我需要避免重复数据。实际上我写了查询
select f.fyeardescr, p.paymnthid, p.paymnthnm
from financialyear f, mnthpll p
where f.status = 'A' and p.fyearcd = f.fyearcd
数据显示数据,如
但我需要喜欢
如何在 oracle.Plz 中实现 sql 查询帮助我
你可以使用分析函数滞后
select
CASE
WHEN f.fyeardescr = lag(f.fyeardescr) over (order by f.fyeardescr)
THEN NULL
ELSE f.fyeardescr
END
AS fyeardescr
, p.paymnthid
, p.paymnthnm
from financialyear f, mnthpll p
where f.status = 'A' and p.fyearcd = f.fyearcd
使用窗口函数:
select case when (row_number() over (partition by fyeardescr order by paymnthid)) = 1
then fyeardescr
else null
end fyeardescr
, p.paymnthid, p.paymnthnm
from financialyear f, mnthpll p
where f.status = 'A' and p.fyearcd = f.fyearcd
;
但正如 tbone 已经指出的那样:这种格式通常是您的报告/显示工具/图层而不是 SQL 的任务。
您可能想研究Pentaho 报告服务或 Jasper 报告(还有很多其他的)您可能会发现您的报告要求将变得比 SQL 格式处理的复杂得多。