0

我有一个数据库,里面有人员的身份证和他们欠的钱。一个人可以在数据库中多次在不同的行上找到。

我需要收集所有打开金额高于 140 的人,并在表格中获取他们的所有信息(表格名称是钱)。

我尝试使用具有 count(Cashdue) > 140 的 select 语句,但他不允许批量收集。

知道如何在只计算总金额超过 140 的人的同时批量收集信息吗?

提前致谢。

DECLARE
  Type type_coll_number
  is table of money.userid%type;

  t_moneydue type_coll_number;
BEGIN
  select money.userid
  bulk collect into t_moneydue
  from money
  group by userid
  having count(Cashdue) > 140;

  for i in 1 .. t_moneydue.count
  loop
    dbms_output.put_line(t_moneydue(i));
  end loop;
END;
4

2 回答 2

1

将我的评论变成答案:-)

您可能希望 sum(cashdue) > 140 而不是 count

于 2013-08-20T11:48:01.400 回答
0

只需将其放在另一个查询中:

select userid
bulk collect into t_moneydue
from (
  select money.userid 
  from money
  group by userid
  having sum(Cashdue) > 140
);
于 2013-08-21T14:16:56.890 回答