当前位置: 首页 > 知识库问答 >
问题:

将select子句中使用的别名表达式用于条件查询的my order by子句

施知
2023-03-14

我有一个与此有点类似的要求。我的API支持有8个以上过滤器参数的过滤器。因此,我想根据传递的筛选器参数动态创建一个查询。我正在使用criteriabuilder创建动态查询。

现在,我能够成功地创建动态查询,但当用户想要对聚合函数进行排序时,问题就来了。在我的查询中,我有4个聚合(计数)函数。因此,为了支持对这些列进行排序,我只使用这个聚合函数的表达式,但我想要的是使用这个表达式别名

selectorder by中重复表达式在我看来是不对的。那么,有没有解决这个问题的办法。我想声明表达式别名一次,并在SELECTORDER BY子句中使用它,如果需要,将来还可以在我的GROUP BY子句中使用

共有1个答案

郎祯
2023-03-14

您可能需要构建一个自定义的投影类,您可以在https://hibernate.atlassian.net/browse/hhh-2952(来自Sergey Pulyaev)中找到一个像样且简单的类,SQLProjectionWithAliasSupport

如果还想支持子标准,事情就会变得更加复杂

 类似资料:
  • 问题内容: 在下面的SQL语句中,我得到以下错误 不能在用于GROUP BY子句的group by列表的表达式中使用聚合或子查询。 我该如何解决? 问题答案: 除非您将包括在内,否则您只能在聚合函数中包括该字段。在您的情况下,按该字段分组会改变逻辑,因此就没有了(并且与您按CASE语句进行分组的尝试有关)。而是包装一个聚合函数。 这样,您的组仍然是相同的,并且根据CASE语句的测试,当只有一行时,

  • 问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN

  • 本文向大家介绍C#使用LINQ查询表达式的基本子句总结,包括了C#使用LINQ查询表达式的基本子句总结的使用技巧和注意事项,需要的朋友参考一下 LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常用的SQL类似,并且查询表达式中的变量可以用匿名类型,所以在很多情况下,不需要指定变量类型就可以构建LINQ表达式。 LINQ的数据源可以是数据库对象或是XML流等,也可

  • 问题内容: 如何使用Criteria编写以下SQL: 问题答案: 要使用NHibernate,产生如下查询: 我们必须选择: 将子选择映射为实体。 创建原始SQL查询 第一种选择是创建一些,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 : 第二种选择是关于使用NHibernate API创建本机/原始SQL: 它没有从映射中

  • 本文向大家介绍postgresql SELECT查询中的公用表表达式,包括了postgresql SELECT查询中的公用表表达式的使用技巧和注意事项,需要的朋友参考一下 示例 公用表表达式支持提取较大查询的部分。例如:            

  • 来自Teradata,我通常会创建一个包含一些变量的易失性表,我会在代码中使用这些变量。 例如。, 然后我会在SELECT WHERE子句中使用该表: 我试图在色调(Impala editor)中执行类似的操作,但遇到了一个错误: AnalysisException:第5行中的语法错误:未定义:来自表名隐藏^遇到:来自预期的:大小写、强制转换、默认值、存在、FALSE、IF、INTERVAL、NO