0
の最新のレコードを取得します。私はこのクエリを持っている各TIMESTAMP
SELECT TIMESTAMP,
TIMESTAMP_OFFER,
TIMESTAMP_TRACK,
STATUS_ACPT
FROM TABLE1
WHERE TIMESTAMP IN
(
SELECT TIMESTAMP
FROM TABLE2
WHERE STATUS = '1'
AND TIMESTAMP_PROCESSED BETWEEN
'2017-01-07-00.00.00.000000'
AND '2017-01-17-00.00.00.000000'
)
そして結果:
---------------------------------------------------------------------------------------------------------
| TIMESTAMP | TIMESTAMP_OFFER | TIMESTAMP_TRACK | STATUS_ACPT |
---------------------------------------------------------------------------------------------------------
|2017-01-09 11:26:29.434254 | 2017-02-01 16:05:02.221179 | 2017-07-13 10:59:20.342584 | E |
---------------------------------------------------------------------------------------------------------
|2017-01-11 15:09:51.935322 | 2017-02-11 12:00:50.410959 | 2017-02-11 12:10:50.410959 | A |
---------------------------------------------------------------------------------------------------------
:私は、各TIMESTAMPの最新のレコードが必要です
---------------------------------------------------------------------------------------------------------
| TIMESTAMP | TIMESTAMP_OFFER | TIMESTAMP_TRACK | STATUS_ACPT |
---------------------------------------------------------------------------------------------------------
|2017-01-09 11:26:29.434254 | 2017-01-25 14:36:23.587199 | 2017-01-25 14:36:23.587199 | P |
---------------------------------------------------------------------------------------------------------
|2017-01-09 11:26:29.434254 | 2017-02-01 16:05:02.221179 | 2017-02-01 16:05:02.221179 | P |
---------------------------------------------------------------------------------------------------------
|2017-01-09 11:26:29.434254 | 2017-02-01 16:05:02.221179 | 2017-07-13 10:59:20.342584 | E |
---------------------------------------------------------------------------------------------------------
|2017-01-11 15:09:51.935322 | 2017-02-11 12:00:50.410959 | 2017-02-11 12:00:50.410959 | P |
---------------------------------------------------------------------------------------------------------
|2017-01-11 15:09:51.935322 | 2017-02-11 12:00:50.410959 | 2017-02-11 12:10:50.410959 | A |
---------------------------------------------------------------------------------------------------------
を、私はこれを取得する必要があります
どうすれば入手できますか?
ご覧のとおり、TIMESTAMPとTIMESTAMP_OFFERは重複する値を持つことができますが、TIMESTAMP_TRACKは一意です。あなたからとで最大値を必要とする各タイムスタンプ列のために1 - 共通テーブル式はrownumbersを追加するために使用され
with temp as (
select timestamp, timestamp_offer, timestamp_track, status_acpt,
row_number() over (order by timestamp desc) as rownum_timestamp,
row_number() over (order by timestamp_offer desc) as rownum_timestamp_offer
from table1)
select timestamp, timestamp_offer, timestamp_track
from temp
where rownum_timestamp = 1 or rownum_timestamp_offer = 1
:
詳細をお知らせください!なぜタイムスタンプが重複している他の行も同じように表示されるため、結果セットが表示されるとはっきりしないので、完全なビジネス要件が何であるかは明確ではありません。 – MichaelTiefenbacher
@MichaelTiefenbacherの要件は、最新のTIMESTAMP_OFFERおよびTIMESTAMP_TRACKに基づいて、指定されたTIMESTAMPの結果を取得することです。 TIMESTAMP_TRACKはユニークなので、私は1つ(最新)のレコードしか取得できません。 – Foxy
1)[タグ:group-n-per-group]問題の古典的な例。 2)[BETWEEN'を使用しないでください。](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common。 aspx) - あなたは1/17の最初の瞬間を選択していますが、これはほとんどあなたが望むものではありません(はい、ポストはSQL Server用ですが、推論は普遍的です。分数秒を指定します)。 –