0

我必须对数据库中的实体数量进行计数 我必须获取出现的实体的注册表数量

ENTITY OVERALL DATE HOUR
====== ===== ==== ====
ENT1 5 20100318 12:00
ENT2 20 20100318 12:00
ENT3 12 20100318 12:00

CURSOR1
SELECT distinct(rp.cod_entidad),
YYYYYYYYY,
to_date(to_char(SYSDATE,'YYYYMMDD'),'YYYY-MM-DD') as fecha_pago,
to_char(sysdate,'hh-mi-ss') as hora_pago
FROM registry rp, product pc
where pc.nro_solicitud = rp.nro_solicitud
and pc.resp_2= 'OK'
and pc.resp_1= 'OK'
4

2 回答 2

2
select entity, sum(overall)
from registry
group by entity
order by entity

你的问题很难理解...

于 2011-05-31T17:54:42.703 回答
2

GROUP BY在您希望唯一的列上使用 a 。
为了让 PL-SQL 不抱怨,您必须使用一个聚合函数来为其他列选择一个值。
我已经选择了MAX(),但是MIN()或者不存在whatever()的也可以。

SELECT 
  rp.cod_entidad,
  count(*) as rowcount,   -- number of rows per distinct rp.cod_entidad
  MAX(to_date(to_char(SYSDATE,'YYYYMMDD'),'YYYY-MM-DD')) as fecha_pago,
  MAX(to_char(sysdate,'hh-mi-ss')) as hora_pago
FROM registry rp
INNER JOIN product pc ON (pc.nro_solicitud = rp.nro_solicitud)
WHERE pc.resp_2 = 'OK' AND pc.resp_1 = 'OK'
GROUP BY rp.cod_entidad

隐式 where join 被认为是有害
的 PS 请不要使用丑陋的隐式 where join,这是令人困惑和不好的做法,因为您where无缘无故地将选择标准与子句中的连接标准混合在一起。
自 1993 年以来,我们就有了明确的连接语法,我强烈推荐它。
它将使编写正确的查询变得更加容易,并使您的意图更加清晰。

于 2011-05-31T22:41:15.363 回答