日付は 3 行しかありませんが、出力として 4 行が必要です。終了日の最後のデータを取得し、開始日の最後の行に配置するように SQL に指示するにはどうすればよいですか?
ラグとリードを試しましたが、Teradata データベースでは機能しないようです。理由はわかりません。
どんな提案も本当に役に立ちます。説明を求めたり、さらにデータが必要な場合と同様に。
考えられるオプションの 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