在分组行中选择第一个实例 - 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';
这是背景,我有一组行:
我只想在每个 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';