火鸟分组依据

Firebird group by

假设我有一个 table 数据:

prename    name      date  
--------------------------
prename1   name1     date1
prename2   name2     date1
prename3   name3     date2

如何通过查询获得正确的组,使其看起来像:

date    name         prename
-------------------------
date1   name1,name2  prename1,prename2
...       ...          ... 

我需要从另一个 table 获取我的名字和前名,所以我使用外连接:

select u.name, u.prename, extract(day from date) as day
from t1 u
    full join t2 d on d.id = u.id
group by day

我收到错误:

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause

您似乎想要这样的查询:

select extract(day from date) as dte, list(u.name, ',') as names,
       list(u.prename, ',') as prenames
from t1 u join
     t2 d
     on d.id = u.id
group by extract(day from date)
order by dte;

备注: - 你不太可能需要 full outer join。从 inner join 开始,看看是否符合您的要求。 - group by 中的表达式定义结果集中的每一行。 - list() 进行聚合字符串连接。