Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SQL中获取多个计数_Java_Sql_Oracle_Hibernate - Fatal编程技术网

Java 在SQL中获取多个计数

Java 在SQL中获取多个计数,java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我希望sql查询返回所有活动和过去案例的计数。我试过这样一个问题 SELECT sum(case when need_By > sysdate and status not in (30,40,50) then 1 else 0 end) AS active, sum(case when need_by < sysdate and status not in (30,40,50) then 1 else 0 end) AS past FROM discrepancy

我希望sql查询返回所有活动和过去案例的计数。我试过这样一个问题

SELECT 
    sum(case when need_By > sysdate and status not in (30,40,50) then 1 else 0 end) AS active,
    sum(case when need_by < sysdate and status not in (30,40,50) then 1 else 0 end) AS past
FROM discrepancy
GROUP BY id;
我期待的是,

ACTIVE PAST
  1      3

如何更改查询以获取活动记录和过去记录的计数。此外,此查询将在hibernate中执行,因此希望确保createNativeQuery工作。

通过删除
组:

SELECT sum(case when need_By > sysdate and status not in (30,40,50) then 1 else 0 end) AS active,
       sum(case when need_by < sysdate and status not in (30,40,50) then 1 else 0 end) AS past
FROM discrepancy;
编辑:

在Oracle中,最后一个是:

SELECT SUM(CASE WHEN need_By > sysdate THEN 1 ELSE 0 END) AS active,
       SUM(CASE WHEN need_by < sysdate THEN 1 ELSE 0 END) AS past
FROM discrepancy
WHERE status NOT IN (30, 40, 50);
选择SUM(当需要时为CASE\u By>sysdate,然后选择1或0 END)作为活动项,
与过去相同的总和(当需要时,按
谢谢。第一个有效。如果我尝试执行第二和第三版本,我会得到ORA-00907:缺少右括号00907。00000-“缺少右括号”*原因:*操作:@JNPW。你应该正确地标记你的问题。您使用MySQL作为标记,它不会产生ORA错误。我没有看到。MySQL是一个错误,我已经解决了。谢谢。
SELECT SUM(need_By > sysdate and status not in (30,40,50)) AS active,
       SUM(need_by < sysdate and status not in (30,40,50)) AS past
FROM discrepancy;
SELECT SUM(need_By > sysdate) AS active,
       SUM(need_by < sysdate) AS past
FROM discrepancy
WHERE status NOT IN (30, 40, 50);
SELECT SUM(CASE WHEN need_By > sysdate THEN 1 ELSE 0 END) AS active,
       SUM(CASE WHEN need_by < sysdate THEN 1 ELSE 0 END) AS past
FROM discrepancy
WHERE status NOT IN (30, 40, 50);