You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGIS SQLite环境下按道路分组生成递增分段ID的实现问题

报错原因

  • 你在同一层SELECT语句里引用了刚通过窗口函数生成的别名RowNum,SQL的执行逻辑不支持这种同级别名引用,因此识别不到该字段。
  • SQLite中+仅用于算术运算,不能用来拼接字符串,用+拼接会强制将内容转为数字做加法,无法得到你要的字符串拼接结果。

正确实现方案

这个需求完全可以用纯SQLite语法实现,不需要调用Python,正确写法如下:

SELECT 
  fid,
  RoadMntnc,
  Location,
  Segments,
  Start_Chainage,
  Location || '.' || ROW_NUMBER() OVER (
    PARTITION BY Location 
    ORDER BY Start_Chainage ASC
  ) AS Segment_ID
FROM test_simple_roads

如果你习惯用别名的写法,也可以用子查询嵌套的方式:

SELECT 
  fid,
  RoadMntnc,
  Location,
  Segments,
  Start_Chainage,
  Location || '.' || RowNum AS Segment_ID
FROM (
  SELECT 
    fid,
    RoadMntnc,
    Location,
    Segments,
    Start_Chainage,
    ROW_NUMBER() OVER (
      PARTITION BY Location 
      ORDER BY Start_Chainage ASC
    ) AS RowNum
  FROM test_simple_roads
) AS t

两种写法都可以在QGIS的SQLite查询里正常运行,生成的Segment_ID完全符合要求。

内容的提问来源于stack exchange,提问作者GeorgeC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:39:02