web-dev-qa-db-ja.com

特定の条件付きのDateAddを使用してください

1つの列にある日数を別の列にある特定のタイムスタンプに追加するには、DateAdd関数を使用する必要があります。

select number_id,
DATEADD('days',NUM_DAY, MY_DATETIME) as LAST_DATETIME
FROM TBL1
GROUP BY 1
 _

ただし、Number_IDごとに、複数の "num_day"があるかもしれません。各number_idの場合、私は1つのレコードを1つだけ持ち、num_dayは最後に挿入された最後のnum_dayを選択する必要があります 添加さ_timestap

これを行う方法はありますか?

2
lalaland

First_value/ last_value ここにあなたの友達です:

SELECT number_id,
    LAST_VALUE(num_day) OVER (PARTITION BY number_id ORDER BY added_timestap) AS last_num_day,
    DATEADD('days',last_num_day, my_datedtime) AS last_datetime
FROM table
 _

しかし、それは最後の価値がこの行の過去/未来を得るでしょう。

SELECT number_id,
    LAST_VALUE(num_day) OVER (PARTITION BY number_id ORDER BY added_timestap RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS last_num_day,
    DATEADD('days',last_num_day, my_datedtime) AS last_datetime
FROM table
 _
1
Simeon Pilgrim

テーブル "TBL1"に "Last-edit" -timestampを追加します

num_day.last_edit.number_id.
4201.12.2021 10:11:16.001.
13.01.12.2021 11:11:16.001.

...そしてサブ選択で結果を取得します。

SELECT
  number_id,
  DATEADD('days',NUM_DAY, MY_DATETIME) as LAST_DATETIME
FROM TBL1
WHERE 
  number_id = '01' 
  AND last_edit in (
    SELECT
     max(last_edit)
    FROM 
      TBL1
    WHERE
      number_id = '01'
);
 _
0
Andreas Hauser