火鸟组由

时间:2017-05-15 09:42:06

标签: sql group-by firebird firebird2.5

假设我有一张包含此数据的表格:

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

如何通过查询获得正确的组,如下所示:

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

我需要从另一个表中获取我的名字和名字,以便我使用外连接:

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

我收到错误:

  

选择列表中的表达式无效(不包含在   聚合函数或GROUP BY子句

1 个答案:

答案 0 :(得分:2)

您似乎想要一个查询,例如:

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()执行聚合字符串连接。