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

创建SQL视图:获取doc_type=3行的前序首个doc_type=2行的doc_lin

创建满足需求的SQL视图

原表数据

doc_numdoc_lindoc_type
DOC000110002
DOC000120003
DOC000130003
DOC000140001
DOC000150002
DOC000160003
DOC000170003

需求说明

创建SQL视图,每行需遵循以下规则:

  • 若doc_type = 3,返回该行之前最近的doc_type = 2行的doc_lin
  • 若doc_type = 1或doc_type = 2,返回当前行的doc_lin

预期结果

doc_numdoc_lindoc_typereturn
DOC0001100021000
DOC0001200031000
DOC0001300031000
DOC0001400014000
DOC0001500025000
DOC0001600035000
DOC0001700035000

实现代码

CREATE VIEW doc_view AS
SELECT 
    doc_num,
    doc_lin,
    doc_type,
    CASE 
        WHEN doc_type = 1 THEN doc_lin
        ELSE LAST_VALUE(CASE WHEN doc_type = 2 THEN doc_lin END) 
             OVER (PARTITION BY doc_num ORDER BY doc_lin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    END AS return
FROM your_table;

代码说明

  1. 分区与排序:按doc_num分区,确保只在同一份文档内查找数据;按doc_lin排序,保证行的顺序和原表一致。
  2. LAST_VALUE函数:在窗口范围内(从当前文档的第一行到当前行),提取最后一个doc_type = 2的doc_lin值,正好匹配doc_type = 3时的需求。
  3. CASE分支处理:对doc_type = 1的行单独返回自身doc_lin,符合预期结果;doc_type = 2的行会提取到自身的doc_lin,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:13:10