火鸟分组依据
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()
进行聚合字符串连接。
假设我有一个 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()
进行聚合字符串连接。