如何在 jOOQ 中的另一个 CTE 中重用一个 CTE

2023-11-30

在 jOOQ 中,我在以后的 CTE 中重用了 CTE。我正在尝试按年份和学校汇总学生的完成记录。我正在使用 jOOQ 3.11.2 和 postgres 9.4。

我有有效的 SQL 代码。但是在 jOOQ 中,我返回了空值。

这似乎是我如何在以后的 CTE 中重新使用一个 CTE 的问题。

一开始我以为可能是count()的使用有问题。从手册来看,count() 的使用似乎是正确的。作为测试,我删除了查询中对 count() 的所有引用,但仍然出现相同的错误。

我找不到在 jOOQ 中重用或链接 CTE 的示例。在 SQL 中很简单,如下所示:SQL - 使用一个 CTE 到另一个 CTE 的引用但我在 jOOQ 中还没有掌握它的窍门。

当在 Intellij 上以调试模式运行时,我看到一个错误select()无法在第二个 CTE 中评估语句。

Cannot evaluate org.jooq.impl.SelectImpl.toString()

这是一个展示我正在做的事情的最小示例。

 CommonTableExpression<Record4<String, String, String, Year>> cteOne = name("CteOne")
    .fields("SCHOOL","STUDENT_NAME", "COURSE_COMPLETED", "YEAR_COMPLETED")
    .as(
            select( a.NAME.as("SCHOOL")
                    , a.STUDENT_NAME
                    , a.COURSE_DESCRIPTION.as("courseCompleted"),
                    , a.YEAR_COMPLETED 
                    )
                    .from(a)
                    .orderBy(a.YEAR_COMPLETED)
    );

CommonTableExpression<Record3<String, Year, Integer >> cteCounts = name("cteCounts")

    .fields("SCHOOL", "YEAR_COMPLETED", "NUM_COMPLETED" )

    .as( with(cteOne)
                    .select(
                            , field(name("cteOne","SCHOOL"), String.class)
                            , field(name("cteOne","YEAR_COMPLETED"), Year.class)
                            , count().as("NUM_COMPS_LOGGED")
                    )
                    .from(cteOne)
                    .groupBy(
                            field(name("cteCompsList","YEAR_COMPLETED"), Year.class)
                          , field(name("cteOne","SCHOOL"), String.class)
                    )
                    .orderBy(
                            field(name("cteCompsList","YEAR_COMPLETED"), Year.class)
                          , field(name("cteOne","SCHOOL"), String.class)
                    )
    );

有人可以指出我在这方面的正确方向吗?


就像在查询的普通 SQL 版本中一样,您的cteCounts不应该有with(cteOne) clause:

WITH 
  cteOne (columns...) AS (select...),
  cteCounts (columns...) AS (select referencing cteOne, no "with cteOne" here...)
SELECT ...
FROM ...

删除它,你的查询应该没问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 jOOQ 中的另一个 CTE 中重用一个 CTE 的相关文章

随机推荐

  • (如何)在 boost 几何体中创建自己的多边形类型并使用 multi_polygon 类型?

    我目前正在尝试用一些扩展 boost geometry 多边形 附加信息 然而编译器启动 include
  • beautiful print 嵌套 矢量图

    我有以下代码来漂亮地打印通用向量 print a vector template
  • 在 Unity3d 中使用 Android 上的音量按钮

    我正在尝试在 Android 上的 unity3d 游戏中使用音量按钮 不幸的是 我看不到任何与卷映射为 KeyCode 相关的内容 因此在我看来 Unity3d 中不存在此功能 有没有一种更隐蔽的方法 有没有办法解决这个问题 其应用是在按
  • PHP 的隐藏功能? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前
  • PHP中使用jqgrid上传文件

    我正在尝试使用 jqgrid 在 Zend Framework 项目中 实现文件上传 jqgrid 允许您创建 文件 类型的输入字段 但不启用 ENCTYPE multipart form data 创建者建议使用另一个插件来处理文件上传
  • 在 Spring Boot 3.2 中注册 Geolatte Jackson 模块

    希望能够反序列化几何几何在 Spring Boot 3 2 中通过注册来指向杰拉特 JSON模块成功并使用其反序列化器 我可以手动注册GeolatteGeomModule在控制器中 但没有让 Spring Boot 自动拾取它 Entity
  • Spring中实现授权

    我有一个用例 其中我只需执行授权部分 JWT 令牌由另一个服务生成 我的服务将仅使用该令牌 该令牌在其自定义声明中包含数据 在我的 Spring Boot 应用程序中 我只想在允许用户访问任何 API 之前验证该令牌是否有效 在所有答案中
  • Java:Linux 中的图形

    是否必须在 Linux 机器上安装 X Windows 才能使 Java 显示全屏图形 那么 全屏图形 有点模糊 不管怎样 显然正在努力从 Java 访问帧缓冲区 帧缓冲工具包 该项目的目标是生成一个代码体 该代码体是 AWT 和 Swin
  • 将mysql结果导出到excel

    我找到了一个小脚本 可以将信息导出到 xls 文件 但我似乎无法让它工作 原始代码可以在这里找到 这是我的代码 Query Database query SELECT FROM db clients WHERE published 1 AN
  • 您可以使用映射来创建没有包装器的实例吗?

    在Python中 你可以将类的名称作为参数给出map为了创建该类的实例 class Point object def init self x y self x x self y y coords 1 2 3 4 pts map Point
  • C++:按值传递对象的原因

    在Java中 所有包含适当对象的变量实际上都是引用 即指针 因此 使用这些对象作为参数的方法调用始终是 通过引用 调用修改对象状态的方法也会影响原始对象 在调用方 C 则不同 这里的参数可以按值传递 也可以按引用传递 对按值传递的对象调用
  • C 中的 MPI 和多维数组分配

    我尝试使用 MPI Scatter 发送矩阵行 动态分配的 但它只发送一行 在其他行中是垃圾 当我使用静态内存分配时 一切都很好 MPI Init argc argv int matrix matrix stor row rank P MP
  • C++ 重载运算符 == 和 < 之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下超载和超载有什么区别 and
  • 有没有办法使用 sql server 2008 数据库将 power bi 报告和仪表板嵌入到 vb.net 或 C# 桌面应用程序中?

    我有一个带有 sql server 2008 数据库的 vb net 桌面应用程序 我目前正在使用 SSRS 来生成报告 但我的客户希望有可视化数据表示 因此我想使用 Power BI 仪表板 那么在 vb net 应用程序中嵌入 powe
  • JavaScript 中的动态变量名称

    I use jQuery 即兴我的应用程序中的提示非常有帮助 但是 要调用即席提示 您需要指定按钮名称及其返回值 如下所示 prompt Example 2 buttons Ok true Cancel false 我真的很想要动态按钮名称
  • ASP MVC3 - 发布后未找到 HttpPost 操作

    我有一个 ASP MVC3 应用程序 它有多个 HttpPost ActionResult 方法 在调试会话期间 这些方法工作正常 但是 当我在浏览器中发布和查看 Web 应用程序时 只有 HttpPost 方法失败 Firebug 显示
  • NHibernate 中的 List、Set 和 Bag

    NHibernate 映射文件中的列表 集合和包有什么区别 每个集合与 NET 集合有何关系 NHibernate 语义 列表 实体的有序集合 允许重复 使用 NETIList在代码中 索引列需要在 NHibernate 中进行映射 Set
  • Apache2 反向代理,通过 OpenID Connect 进行身份验证并通过 ldap 进行授权

    我正在尝试设置一个需要针对 OpenID Connect 身份提供商进行身份验证的反向代理 然后 用户授予反向代理访问其数据的权限 代理后面的某些应用程序只有当用户是特定 LDAP 组的成员时才能访问 遗憾的是 应用程序是转储的 无法自行授
  • 在 Bash 脚本中处理 gcc 警告和输出

    所以我对整个 Bash 脚本场景很陌生 但我正在编写一个脚本来编译目录中的所有 c 文件 我已经通过以下方式成功做到了这一点 for F in c do gcc c Wall o F c F done 一切正常 但我希望输出看起来像 ex1
  • 如何在 jOOQ 中的另一个 CTE 中重用一个 CTE

    在 jOOQ 中 我在以后的 CTE 中重用了 CTE 我正在尝试按年份和学校汇总学生的完成记录 我正在使用 jOOQ 3 11 2 和 postgres 9 4 我有有效的 SQL 代码 但是在 jOOQ 中 我返回了空值 这似乎是我如何