以下語法可以幫你帶出該筆資料的所有欄位且不用另做join,我看上面有些解答只有辦法帶出特定欄位(如果還要再帶其他欄位進來就需要另做join)。
原始資料:
A層
先把不是NG的選出來
B層
tag1:把區間區塊的最小值給列出來
最後
把區間最小值給where出來
語法如下:
select B.*
--------以下B層--------
from(
select A.*,
MIN("CheckTimes"::numeric) over (PARTITION BY "ProductNo") tag1
--------以下A層--------
from(
SELECT *
FROM "ithelp_case28"
where "CheckStatus" is null --總之是【不是NG】的寫法
) A
--------以上A層--------
) B
--------以上B層--------
where "CheckTimes"::numeric = tag1
::numeric的格式處理就酌情修掉吧~
select ProductNo,min(CheckTimes) from tablename
where CheckStatus<>'NG'
group by ProductNo
SELECT A.*
FROM TABLE AS A
INNER JOIN (SELECT ProductNo,min(CheckTimes) AS CheckTimes FROM TABLE WHERE CheckStatus<>'NG' GROUP BY ProductNo) AS B ON A.ProductNo = B.ProductNo AND A.CheckTimes = B.CheckTimes
應該是這樣吧,
沒有資料沒辦法測試。
如果只是要求每ProductNo
組 最早日期一筆資料的話可以使用 ROW_NUMBER
和 視窗函數
SELECT * FROM (
SELECT *,ROW_NUMBER() OVER(PARTITION BY ProductNo ORDER BY RecAt) rn
FROM T
) t1
where rn = 1