在分组行中选择第一个实例 - PostgreSQL

Picking first instance in grouped rows- PostgreSQL

这是背景,我有一组行:

我只想在每个 accountid 的类型列中的每个 RECOVERY 之后获得第一个 ADVANCE

所以我的结果应该是procdates的进步

2015-09-03 09:55:12.228343
2015-09-04 23:10:42.016903

这可以在一个查询中实现吗?

试试这个:

WITH CTE_PrevType
AS (
    SELECT accountid
        ,procdate
        ,LAG(type, 1, NULL) OVER (
            ORDER BY procdate
            ) AS PreviousType
    FROM < Table_Name >
    )
SELECT
accountid
,procdate
,type
,value
FROM < Table_Name > AS TN
INNER JOIN CTE_PrevType CPT
    ON TN.accountid = CPT.accountid
        AND TN.procdate = CPT.procdate
WHERE TN.type = 'ADVANCE'
    AND CPT.type = 'RECOVERY'

我找到获取方法了!

SELECT * FROM
(SELECT accountid,
    procdate, 
        type, 
        value, 
        LAG(type) OVER (ORDER BY procdate ASC) AS previousType
   FROM transaction) w WHERE previousType = 'RECOVERY';