假设有一个名为policy_data的表,包含以下列:PolicyId、Date、RowNumber、其他列。 下面是一个示例代码,用于按照PolicyId获取每个日期的前2行,并且日期不能重复:
WITH CTE AS (
SELECT PolicyId, Date, RowNumber,
ROW_NUMBER() OVER(PARTITION BY PolicyId, Date ORDER BY RowNumber) AS RowNum
FROM policy_data
)
SELECT PolicyId, Date, RowNumber
FROM CTE
WHERE RowNum <= 2
ORDER BY Date, RowNumber;
以上代码使用了CTE(公共表表达式)和ROW_NUMBER()窗口函数。首先,CTE将根据PolicyId和Date对数据进行分组,并按照RowNumber进行排序,然后使用ROW_NUMBER()函数为每个分组中的行分配一个行号。最后,查询选择每个分组中的前2行,并按照Date和RowNumber进行排序。
注意:上述代码中的policy_data应替换为实际的表名,同时根据实际情况调整列名。
上一篇:按照匹配条件合并数据框
下一篇:按照PostgreSQL进行分组