[英]SQL: selecting multiple rows per group
我的表tbl1
有一些記錄。 有一列s
,我需要根據該列檢索datateime1
是舊日期的行。
如果我嘗試下面顯示的查詢,我似乎會得到正確的結果。 現在,我嘗試獲取s1
組的兩個最舊的行。 我嘗試在IN子句中添加兩次's1'
,但這不起作用,因為行是由行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
我猜英語不是您的母語,但是呢:
where tbl2.rowno=1 OR (tbl2.rowno = 2 and tbl1.s = s1)
...或者意味着“是s1”
搶
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.