VARCHAR 的 OVER 子句

OVER clause for VARCHAR

我可以使用聚合函数对数字和日期列使用 over 子句。但是,我无法对 varchar 列使用 over 子句。在下面的示例中,我可以使用以下行重现 FIRST_FILL_DT 列:

MIN(FILL_DATE) OVER(PARTITION BY ID) AS FIRST_FILL_DT

但是,在尝试生成 FIRST_BP_MED 列时,我不确定是否可以使用类似的语法,因为我不知道聚合函数是否可以正确处理 VARCHAR 列。

任何人都可以就如何解决这个问题提供见解或指导吗?

我的数据是这样的:

我想要的数据应该是这样的:

如果你的数据库支持FIRST_VALUE window函数,你可以这样使用:

FIRST_VALUE(BP_MED) OVER (PARTITION BY ID ORDER BY FILL_DATE) AS first_bp_med

FIRST_VALUE 的文档:

MySQL, SQL Server, Postgresql, SQLite

这很简单。在 window 子句上使用 'FIRST_VALUE' 来选择分区忽略的第一个值,而不管条件如何。

https://docs.microsoft.com/en-us/sql/t-sql/functions/first-value-transact-sql?view=sql-server-ver15

SELECT 
    ID, FILL_DATE, BP_MED, 
    MIN (FILL_DATE) OVER (PARTITION BY ID ORDER BY FILL_DATE) AS FIRST_FILL_DT, 
    FIRST_VALUE (BP_MED) OVER (PARTITION BY ID ORDER BY FILL_DATE) AS FIRST_BP_MED
FROM 
    YOURTABLE;