PL SQL:查询以计算字段的不同值

时间:2011-05-31 17:45:09

标签: sql plsql plsqldeveloper

我必须计算数据库中实体的数量,我必须获得出现的实体的注册数量

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'

2 个答案:

答案 0 :(得分:2)

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

你的问题很难理解......

答案 1 :(得分:2)

在您想要独特的列上使用GROUP BY 为了让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

<强> Implicit where join considered harmful
附:请不要使用丑陋隐含的地方加入,这是令人困惑和不好的做法,因为您在where条款中无条件地将选择标准与加入条件混合在一起。
自1993年以来,我们有明确的连接语法,我热烈推荐它 这将使编写正确的查询变得更加容易,这将使您的意图更加清晰。