我目前有一个在 SQL 中运行良好的查询,但我需要它在 Hibernate 中运行。它查找时间窗口内 2 个字段的记录数。GROUP BY
但是,快速的 google 搜索会告诉您,在 hibernate 的子句中不能有算术表达式。
我的表/SQL:
CREATE TABLE T (
Field_1 CHAR(4),
Field_2 CHAR(4),
Time_Stamp Date
);
--Populated
DECLARE @DATE1 DATE, @DATE2 DATE, @INTERVAL INT;
@DATE1 = TO_DATE('2013-01-01', 'yyyy-MM-dd');
@DATE2 = TO_DATE('2013-01-02', 'yyyy-MM-dd');
@INTERVAL = 15;
SELECT * FROM (
SELECT COUNT(Field_1) as field1,
COUNT(Field_2) as field2,
FLOOR( TO_NUMBER( TO_CHAR( Time_Stamp, 'hhmi' ) ) / @INTERVAL ) as timeInterval
FROM T
WHERE Time_Stamp BETWEEN @DATE1 AND @DATE2
GROUP BY FLOOR( TO_NUMBER( TO_CHAR( Time_Stamp, 'hhmi' ) ) / @INTERVAL )
) ORDER BY timeInterval ASC;
如您所见,我可以ORDER BY
使用子查询删除,以便其中没有算术。GROUP BY
在这种情况下,是否可以使用该子句或其他一些解决方法做类似的事情?
我已经在休眠中编写了查询,并且可以在两者之间进行转换,我只需要查询的结构,所以算术在函数组之外,SQL 语法很好。