sql execute block error: multiple rows in singleton select

sql execute block error: multiple rows in singleton select

我正在努力使下面的代码正常工作。每当我尝试时,它都会给我错误 multiple rows in singleton select

execute block returns (order integer,sales decimal(18,2))
as
declare variable client varchar(10);

begin

for

select clientcode from clients

into  :client

do
begin

select order_id, sum(amount)sales from orders where order_date='today' and clientcode= :client
group by 1

into :order,:sales;

suspend;
end
end

错误

Error in result_fetch(res@ptr, n) : 
  nanodbc/nanodbc.cpp:2593: HY000: [ODBC Firebird Driver][Firebird]multiple rows in singleton select

如果我改变第二个select,它returns一个集合,但只有第一个出现。

select first(1) order_id, sum(amount)sales from orders where order_date='today' and clientcode= :client
group by 1

感谢任何帮助

如果您在 PSQL 中使用 select,那么它最多只能生成一行。给定错误,查询生成多行。

如果需要产生多行,那么就得用for select ... do,例如:

execute block returns (order integer,sales decimal(18,2))
as
declare variable client varchar(10);
begin
  for select clientcode 
    from clients
    into :client 
    do
  begin
    for select order_id, sum(amount)sales 
      from orders 
      where order_date='today' and clientcode= :client
      group by 1
      into :order,:sales
      do
    begin
      suspend;
    end
  end
end

请注意,这段代码最好写成 inner join

select o.order_id, sum(o.amount) as sales
from client c
inner join orders o
  on o.clientcode = c.clientcode
group by c.clientcode, o.order_id