pg数据库查找某个字段倒数6为1和0的所有数据
时间: 2024-09-24 14:06:50 浏览: 32
oracle 实际值超过数据库某个字段指定长度报错解决
在PostgreSQL数据库中,如果你想查找某个字段(假设这个字段名为`field_name`)的值,在最近连续六个记录中既包含1又包含0,你可以使用窗口函数和CASE语句来实现。这通常需要创建一个自连接查询,因为需要比较当前行之前的数据。这里是一个示例SQL查询:
```sql
WITH data AS (
SELECT t.*,
LAG(field_name) OVER (ORDER BY row_number) as prev_value,
ROW_NUMBER() OVER (ORDER BY row_number) as rn
FROM (
SELECT *,
ROW_NUMBER() OVER (ORDER BY your_sort_column) as row_number
FROM your_table
) t
)
SELECT *
FROM data
WHERE rn BETWEEN 1 AND 7 -- 获取连续六行
AND CASE WHEN rn = 1 THEN field_name = 1 ELSE prev_value = 0 END
AND prev_value IN (NULL, 0, 1); -- 包含0和1,排除NULL作为边界情况
```
在这个查询中,你需要将`your_table`替换为实际表名,`row_number`替换为用于排序的实际列,`field_name`替换为你要检查的字段。
阅读全文