0

我需要避免重复数据。实际上我写了查询

select f.fyeardescr, p.paymnthid, p.paymnthnm
  from financialyear f, mnthpll p
 where f.status = 'A' and p.fyearcd = f.fyearcd

数据显示数据,如

在此处输入图像描述

但我需要喜欢

在此处输入图像描述

如何在 oracle.Plz 中实现 sql 查询帮助我

4

3 回答 3

2

你可以使用分析函数滞后

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
于 2012-07-12T13:46:29.517 回答
1

使用窗口函数:

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 的任务。

于 2012-07-12T13:54:10.903 回答
0

您可能想研究Pentaho 报告服务或 Jasper 报告(还有很多其他的)您可能会发现您的报告要求将变得比 SQL 格式处理的复杂得多。

于 2012-07-12T13:47:26.890 回答