合并函数以填充日期 (Postgresql)
coalesce function to fill date (Postgresql)
我有一个 table 看起来像这样:
M_DATE SPEND M_CLIENT M_SHOW ACQ SP_DATE A_DATE
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 NULL
01/03/15 NULL 1 GAME 3 NULL 01/03/15
01/04/15 NULL 1 GAME 6 NULL 01/04/15
02/04/15 3000 2 BOOK NULL 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 NULL 02/05/15
编辑:我想用给定 ID 和类型的最新非空值 cost_date 替换 cost_date 列中的空值。
理想情况下,生成的 table 应如下所示:
M_DATE SPEND M_CLIENT M_SHOW ACQ SP_DATE A_DATE
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 NULL
01/03/15 NULL 1 GAME 3 01/02/15 01/03/15
01/04/15 NULL 1 GAME 6 01/02/15 01/04/15
02/04/15 3000 2 BOOK NULL 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 02/04/15 02/05/15
我目前正在尝试对自身进行自连接和合并 cost_date。有任何想法吗?
我没有 PostgreSQL 访问权限来验证,但这样的事情应该有效:
查询包含要设置为的日期:
SELECT id, cost_date
FROM tblName
WHERE cost is not null
将其设为视图或子选择以通过 id 将其加入您的 table,然后按您的预期合并
我使用了 LEAD 函数:lead(sp_date)OVER(PARTITION BY m_client, m_TYPE ORDER BY sp_date) AS next_date
结果:
M_DATE SPEND M_CLIENT M_TYPE ACQ SP_DATE next_date
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 02/04/15
01/03/15 NULL 1 GAME 3 NULL NULL
01/04/15 NULL 1 GAME 6 NULL NULL
02/04/15 3000 1 GAME 3 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 01/02/15 NULL
我有一个 table 看起来像这样:
M_DATE SPEND M_CLIENT M_SHOW ACQ SP_DATE A_DATE
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 NULL
01/03/15 NULL 1 GAME 3 NULL 01/03/15
01/04/15 NULL 1 GAME 6 NULL 01/04/15
02/04/15 3000 2 BOOK NULL 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 NULL 02/05/15
编辑:我想用给定 ID 和类型的最新非空值 cost_date 替换 cost_date 列中的空值。
理想情况下,生成的 table 应如下所示:
M_DATE SPEND M_CLIENT M_SHOW ACQ SP_DATE A_DATE
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 NULL
01/03/15 NULL 1 GAME 3 01/02/15 01/03/15
01/04/15 NULL 1 GAME 6 01/02/15 01/04/15
02/04/15 3000 2 BOOK NULL 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 02/04/15 02/05/15
我目前正在尝试对自身进行自连接和合并 cost_date。有任何想法吗?
我没有 PostgreSQL 访问权限来验证,但这样的事情应该有效:
查询包含要设置为的日期:
SELECT id, cost_date
FROM tblName
WHERE cost is not null
将其设为视图或子选择以通过 id 将其加入您的 table,然后按您的预期合并
我使用了 LEAD 函数:lead(sp_date)OVER(PARTITION BY m_client, m_TYPE ORDER BY sp_date) AS next_date
结果:
M_DATE SPEND M_CLIENT M_TYPE ACQ SP_DATE next_date
------ ------ ---- -------- ----------- --------- ---------
01/02/15 2000 1 GAME NULL 01/02/15 02/04/15
01/03/15 NULL 1 GAME 3 NULL NULL
01/04/15 NULL 1 GAME 6 NULL NULL
02/04/15 3000 1 GAME 3 02/04/15 NULL
02/05/15 NULL 2 BOOK 5 01/02/15 NULL