火鸟选择与计数不同

  • 本文关键字:选择 火鸟 sql firebird
  • 更新时间 :
  • 英文 :


在Firebird 2.5中,我有一个硬件设备事件表;每一行都包含时间戳、设备ID和事件的整数状态。我需要在指定的日期范围内检索具有非0状态的ID子集的行集,以及每个ID的非0事件的实例数。我可以获得在指定日期范围内具有非0状态的ID的子集,但我不知道如何获得与同一行集中的每个ID关联的非0状态行的计数。如果可能的话,我更喜欢在查询中而不是在存储过程中执行此操作。

表格为:

RPR_HISTORY
TSTAMP    timestamp
RPRID     integer
PARID     integer
LASTRES   integer
LASTCUR   float

我想要的行集就像

RPRID    ERRORCOUNT
-------------------
18       4
19       2
66       7

查询

select distinct RPRID from RPR_HISTORY
where (LASTRES <> 0)
and (TSTAMP >= :STARTSTAMP);

给了我要找的ID,但显然不是每个ID的非0状态行数。我已经尝试了从上面派生的嵌套查询的组合;所有生成错误,通常是分组或聚合错误。这似乎是一件简单的事情,但我只是逃避了。

明白了!查询

select rh.RPRID, count(rh.RPRID) from RPR_HISTORY rh 
where (rh.LASTRES <> 0)
and (rh.TSTAMP >= :STARTSTAMP)
and rh.RPRID in
(select distinct rd.RPRID from RPR_HISTORY rd where rd.LASTRES <> 0) 
group by rh.RPRID;

返回我需要的行集。

相关内容

  • 没有找到相关文章

最新更新