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

同一条查询中使用多个窗口函数触发‘Invalid Query’错误的问题求助

同一条查询中使用多个窗口函数触发‘Invalid Query’错误的问题求助

大家好,我遇到了一个NewSQL窗口函数使用的问题,想请教一下社区的朋友们:

我先通过NewSQL接口创建了一个名为orders的表,对应的DDL语句如下:

CREATE TABLE orders (
  orderId STRING PRIMARY KEY,
  customerId STRING,
  orderDate TIMESTAMP,
  totalAmount DOUBLE,
  status STRING
);

我的需求是在单条查询里,同时获取每个客户的上一笔订单日期和下一笔订单日期,于是试着用LAG()和LEAD()两个窗口函数写了下面的查询语句:

SELECT ord.*,
  LEAD(orderDate, 1) OVER (PARTITION BY customerId ORDER BY orderDate) AS nextOrderDate,
  LAG(orderDate, 1) OVER (PARTITION BY customerId ORDER BY orderDate) AS prevOrderDate
FROM orders ord
ORDER BY customerID, orderDate;

但执行这条查询时,直接触发了Invalid Query的错误。有意思的是,如果我只保留其中一个窗口函数——要么只留LEAD(),要么只留LAG()——查询就能正常运行。

目前我只能通过嵌套子查询的方式,分两次获取这两个字段,比如下面的写法是可以正常执行的:

SELECT a.*,
  LEAD(orderDate, 1) OVER (PARTITION BY customerId ORDER BY orderDate) AS nextOrderDate
FROM (
  SELECT ord.*,
    LAG(orderDate, 1) OVER (PARTITION BY customerId ORDER BY orderDate) AS prevOrderDate
  FROM orders ord
) a
ORDER BY customerID, orderDate;

但这种嵌套的方式总觉得有点繁琐,我还是希望能在单条顶层查询里同时使用这两个窗口函数完成需求。有没有朋友知道这个错误的原因,或者有没有办法实现我的需求呢?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:42:58