1. ホーム
  2. sql

[解決済み] SQLです。最初の出現箇所のみを返す

2022-02-05 13:11:25

質問

私はSQLをめったに使いませんし、アーカイブで似たようなものを見つけることができないので、この簡単なクエリの質問をしています。私は1つが返すクエリが必要です 人物ID で、最初の 見た時間

レコードです。

seenID | personID | seenTime
   108      3         13:34
   109      2         13:56
   110      3         14:22
   111      3         14:31
   112      4         15:04
   113      2         15:52

希望する結果

personID | seenTime
   3         13:34
   2         13:56
   4         15:04

それが、私がやったこと&失敗したことです。

SELECT t.attendanceID, t.seenPersonID, t.seenTime
(SELECT ROW_NUMBER() OVER (PARTITION BY seenID ORDER BY seenID) AS RowNo,
seenID,
seenPersonID,
seenTime
FROM personAttendances) t
WHERE t.RowNo=1

追伸:SQL CE 4のお知らせ

どのように解決するのですか?

seenIDの増加に伴い、seedTimeが増加した場合。

select personID, min(seenTime) as seenTime
from personAttendances
group by personID

別件のアップデート

そうではなく,本当に最小のseedIDに対応するseedTimeが欲しい場合(seedIDがユニークであると仮定して).

select a.personID, a.seenTime
from personAttendances as a
    join (
        -- Get the min seenID for each personID
        select personID, min(seenID) as seenID
        from personAttendances
        group by personID
    ) as b on a.personID = b.personID
where a.seenID = b.seenID