首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLiteStudio中的滞后()函数

SQLiteStudio中的滞后()函数
EN

Stack Overflow用户
提问于 2021-01-05 03:27:28
回答 1查看 261关注 0票数 1

我希望返回由CustomerID分组的最后一个事务日期,并使用SQLiteStudio 3.2.1。我的桌子是这样的:

代码语言:javascript
复制
CustomerID   Date       TransactionID    Amount
    1      2000-07-01          1          20.00
    2      2000-07-04          2          40.00
    1      2002-08-01          3          20.00
    1      2007-01-01          4          60.00
    2      2010-05-09          5          70.00
    1      2012-06-25          6          35.00`

这就是我希望最终结果是什么样子:

代码语言:javascript
复制
CustomerID       Date       TransactionID    Amount  Last Transaction Date
    1          2000-07-01          1          20.00           NULL
    2          2000-07-04          2          40.00           NULL
    1          2002-08-01          3          20.00        2000-07-01
    1          2007-01-01          4          60.00        2002-01-01 
    2          2010-05-09          5          70.00        2000-07-04
    1          2012-06-25          6          35.00`       2007-01-01

我试图使用以下代码:

代码语言:javascript
复制
SELECT CustomerID, Date, Amount, LAG(Date,1) OVER (PARTITIONED BY CustomerID ORDER BY Date) 
FROM table

但是,在SQLiteStudio中不支持滞后函数(或者我遗漏了什么?)。SQL编辑器也不识别分区BY子句。是否有方法在SQL函数编辑器中使用滞后函数或分区BY子句?任何帮助都将不胜感激!谢谢!

另外:在SQLiteStudio的SQLiteStudio中,有谁拥有创建聚合函数的资源吗?我知道它采用了“初始化代码”、“每步代码”和“最后一步实现代码”这三个参数,但我正在寻找SQLiteStudio中这三个参数的语法/要求的示例。(再次感谢!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 03:34:54

正如上面粘贴的那样,分区子句有一个错误,应该是PARTITION BY,而不是PARTITIONED BY。如果这是唯一的问题,那么只需修复错误:

代码语言:javascript
复制
SELECT CustomerID, Date, Amount,
       LAG(Date) OVER (PARTITION BY CustomerID
                       ORDER BY Date) AS "Last Transaction Date"
FROM yourTable
ORDER BY Date;

如果上面的方法仍然不起作用,那么您的SQLite版本可能不支持LAG。在这种情况下,一个解决办法是使用关联子查询来代替LAG

代码语言:javascript
复制
SELECT CustomerID, Date, Amount,
       (SELECT t2.Date
        FROM yourTable t2
        WHERE t2.CustomerID = t1.CustomerID AND
              t2.TransactionID < t1.TransactionID
        ORDER BY t2.TransactionID DESC
        LIMIT 1) AS "Last Transaction Date"
FROM yourTable t1
ORDER BY Date;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65572831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档