У меня есть несколько записей в моей таблице tbl1
. Есть столбец s
, по которому мне нужно извлечь строки, где datateime1
- старая дата.
Если я попробую запрос, показанный ниже, я получу правильные результаты. Теперь я пытаюсь получить две самые старые строки из группы s1
. Я попытался добавить 's1'
дважды к предложению IN, но это не работает, потому что строки выбираются по их ROWNUMBER.
Так, как я могу переписать запрос, чтобы выбрать гибкое количество строк в группе (начиная с двух самых старых дат)?
Запрос:
SELECT
tbl2.*
FROM
(
SELECT
a, b, c,
ROW_NUMBER() OVER (PARTITION BY tbl1.s ORDER BY tbl1.Datetime1)) AS RowNo
FROM
tbl1
WHERE
tbl1.s in ('s1','s2','s2','s3','s1','s4')
) AS tbl2
WHERE
tbl2.rowno = 1
tbl1 выглядит так:
a b c s Datetime1
-------------------------------------------------
samp1a samp1b samp1c s1 1/1/2000
samp1a samp1b samp1c s1 2/1/2000
samp1a samp1b samp1c s1 3/1/2000
samp2a samp2b samp2c s2 2/1/2002
samp2a samp2b samp2c s2 3/1/2002
samp3a samp3b samp3c s3 3/1/2000
Желаемый вывод:
a b c s p
-------------------------------------------------
samp1a samp1b samp1c s1 1/1/2000
samp1a samp1b samp1c s1 2/1/2000
samp2a samp2b samp2c s2 2/1/2002
samp3a samp3b samp3c s3 3/1/2000