替代Firebird中的LIST聚合函数

时间:2017-04-07 11:01:15

标签: concatenation aggregate-functions firebird firebird1.5

我有一张桌子订单:

select * Orders order by 2

Ordernumber     Zone
12345           1
12345           2
12345           3

什么sql会产生以下输出?

Ordernumber     Zone
12345           123

不幸的是,LIST无法使用,因为这是一个旧的Firebird 1.5xxx。 还有其他可能性吗?

1 个答案:

答案 0 :(得分:1)

CREATE PROCEDURE GET_ZONER(ordernumber  Integer)
returns (zoner varchar(20))
AS
declare variable zone varchar(20) ;
Begin
  zoner = '';
  for 
  select distinct zone from orders 
  where ordernumber = :ordernumber order by zone into :zone  do
  begin
     zoner  =  zoner || :zone;
  end
  SUSPEND;
End

然后使用

select * from getzoner(1234)