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 ReportingサービスまたはJasperレポート(他の多くのレポート)を調べることをお勧めします。レポートの要件は、SQLフォーマットが処理するよりも大幅に複雑になる可能性があります。

于 2012-07-12T13:47:26.890 に答える