GROUP BY支持含有表达式或者函数的列
功能描述
在Vastbase现有group by功能的基础上增强对Oracle group by子句的兼容。针对含有子查询的分组列,不仅支持普通的列,而且支持含有表达式或者函数的列。
注意事项
该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。
语法格式
select [grouping_element],
[expression]
[WHERE condition]
[from table]
group by [grouping_element];
参数说明
grouping_element
函数、表达式。
expression
SQL语句中的子查询。
示例
1、创建测试表并插入数据。
create table test_a(c1 number,c2 varchar2(20));
insert into test_a values(1,'a');
insert into test_a values(2,'a_xxr');
insert into test_a values(3,'a_ytr');
insert into test_a values(4,'b');
insert into test_a values(5,'b_xxr');
insert into test_a values(6,'b_ytr');
create table test_b(c1 number,c2 varchar2(20));
insert into test_b values(11,'a');
insert into test_b values(22,'b');
insert into test_b values(33,'aa');
insert into test_b values(44,'ba');
insert into test_b values(55,'e');
insert into test_b values(66,'f');
2、使用group by子句包含函数。
SELECT substr(a.c2, 1, 1)
, (
SELECT b.c1
FROM test_b b
WHERE b.c2 = substr(a.c2, 1, 1)
)
FROM test_a a
GROUP BY substr(a.c2, 1, 1);
返回结果为:
substr | c1
--------+----
a | 11
b | 22
(2 rows)