2

日付は 3 行しかありませんが、出力として 4 行が必要です。終了日の最後のデータを取得し、開始日の最後の行に配置するように SQL に指示するにはどうすればよいですか?

ラグとリードを試しましたが、Teradata データベースでは機能しないようです。理由はわかりません。

どんな提案も本当に役に立ちます。説明を求めたり、さらにデータが必要な場合と同様に。

4

1 に答える 1

0

考えられるオプションの 1 つ: 対象のレコードのセットを取得し、各行に番号を付けてから、各行を次の行と自己結合します。締めくくりのレコードを追加します。

WITH numbered AS (
    SELECT effect_date, row_number() OVER (ORDER BY effect_date) AS rownum
      FROM price
      WHERE prod_id='4'
 )

 SELECT *
   FROM ( SELECT a.effect_date AS start_date
                ,b.effect_date AS end_date
            FROM numbered a
                ,numbered b
            WHERE b.rownum = a.rownum + 1

          UNION

          SELECT MAX(effect_date)
                ,TO_DATE('29991231', 'YYYYMMDD')
            FROM numbered
        ) x
   ORDER BY 1
于 2012-08-24T02:42:57.153 に答える