楼主: 〇〇

人大金仓7文档

[复制链接]
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
11#
发表于 2012-5-16 12:11 | 只看该作者
〇〇 发表于 2012-5-16 11:37
pgs 的序列还能用?

支持OO八段版主散分庆祝,哈哈

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:022016猴年福章
日期:2016-02-18 09:31:30
12#
发表于 2012-5-16 12:18 | 只看该作者

V4下的语句
SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 FROM B WHERE A.COL1 = B.COL1) AS COL4
FROM A
GROUP BY A.COL1,A.COL2) A
GROUP BY A.COL1,A.COL4;

拿到V7下(jdbc驱动)报
( 12:16:19  [SELECT - 0 row(s), 0.000 secs]  [Error Code: 0, SQL State: XX000]  [KingbaseES Server]ERROR: failed to locate grouping columns)错误

语句格式改成下面的就没事了
SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3, B.COL4 AS COL4
FROM A JOIN B ON A.COL1 = B.COL1
GROUP BY A.COL1,A.COL2,B.COL4) A
GROUP BY A.COL1,A.COL4;

大概是这意思吧 是该说校验更严格更好了呢。还是更麻烦了呢。呵呵

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
13#
发表于 2012-5-16 13:38 | 只看该作者
wangze706 发表于 2012-5-16 12:18
V4下的语句
SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 F ...

第一个语句的col4不在group by里面也不是集函数的形势,不符合sql标准,应该报错。

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:022016猴年福章
日期:2016-02-18 09:31:30
14#
发表于 2012-5-16 13:56 | 只看该作者
myth8860 发表于 2012-5-16 13:38
第一个语句的col4不在group by里面也不是集函数的形势,不符合sql标准,应该报错。

SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 FROM B WHERE A.COL1 = B.COL1) AS COL4
FROM A
GROUP BY A.COL1,A.COL2
) A
GROUP BY A.COL1,A.COL4;
呵呵,就语法格式来说上面语句确实有问题,不过问题在于,里面嵌套的这红色部分理论上不符合要求但在V7下也是不报错的。而在外层GROUP BY A.COL1,A.COL4;报错,或许是我理解错了?还是对这种嵌套的语句有什么特殊处理。呵呵,那就不知道了

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:022016猴年福章
日期:2016-02-18 09:31:30
15#
发表于 2012-5-16 13:57 | 只看该作者
〇〇 发表于 2012-5-16 11:37
pgs 的序列还能用?

不要问得这么直白嘛,有些人会不高兴的。呵呵

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
16#
发表于 2012-5-16 14:43 | 只看该作者
wangze706 发表于 2012-5-16 13:56
SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 FROM B WHERE  ...

是我看错了,里面是个相关子查询,是可以的。
drop table a;
drop table b;
create table a(col1 int,col2 int,col3 int,col4 int);
insert into a values(1,2,1,6);
insert into a values(2,3,3,4);
insert into a values(3,4,3,8);
insert into a values(4,5,4,9);
insert into a values(5,6,5,0);

create table b(col1 int,col2 int,col3 int,col4 int);

insert into b values(4,1,6,2);
insert into b values(5,5,4,6);

SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 FROM B WHERE A.COL1 = B.COL1) AS COL4
FROM A
GROUP BY A.COL1,A.COL2) A
GROUP BY A.COL1,A.COL4;

-dm7和oracle上都可以查出结果

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:022016猴年福章
日期:2016-02-18 09:31:30
17#
发表于 2012-5-16 17:20 | 只看该作者
达梦的老兄,你把字段的数据类型都换成varchar试试看,上午忘了说了。我那两个表里用到的字段都是varchar类型的。,如果按照你贴那几个建表语句,字段类型都是int的话,金仓的也没查询问题。手头上除了金仓就只有db2,db2下语句也是没问题的。

如果都是varchar类型的,金仓v7在 SUM(A.COL3)  这边报一个什么不是最佳候选函数的错误,

“17:10:02  [SELECT - 0 row(s), 0.000 secs]  [Error Code: 0, SQL State: 42725]  [KingbaseES Server]ERROR: 函数 SUM(CHARACTER VARYING) 不唯一
HINT: 不能选择一个最佳候选函数。你可以增加显式的类型转换.”

把sum去掉,再执行。嵌套内部的肯定是没问题的。外面再group by就是不行,金仓这千呼万唤始出来的小7同学还挑数据类型。数据类型不合心意就不干活,呵呵

顺便说下,我实在从4.1.7里迁移过来的数据库上测试的。最后不会赖到数据库上说数据库迁移有问题吧。好了,今天吐槽完毕。明天再试试其他数据类型完了接着喷。呵呵

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
18#
 楼主| 发表于 2012-5-17 12:44 | 只看该作者
wangze706 发表于 2012-5-16 13:57
不要问得这么直白嘛,有些人会不高兴的。呵呵

SELECT gs::number AS n1 FROM generate_series(1,9) gs

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
19#
发表于 2012-5-17 13:13 | 只看该作者
wangze706 发表于 2012-5-16 17:20
达梦的老兄,你把字段的数据类型都换成varchar试试看,上午忘了说了。我那两个表里用到的字段都是varchar ...

drop table a;
drop table b;
create table a(col1 varchar(10),col2 varchar(10),col3 varchar(10),col4 varchar(10));
insert into a values(1,2,1,6);
insert into a values(2,3,3,4);
insert into a values(3,4,3,8);
insert into a values(4,5,4,9);
insert into a values(5,6,5,0);

create table b(col1 varchar(10),col2 varchar(10),col3 varchar(10),col4 varchar(10));

insert into b values(4,1,6,2);
insert into b values(5,5,4,6);

SELECT A.COL1,A.COL4 FROM (
SELECT A.COL1,A.COL2,SUM(A.COL3) AS COL3,(SELECT B.COL4 FROM B WHERE A.COL1 = B.COL1) AS COL4
FROM A
GROUP BY A.COL1,A.COL2) A
GROUP BY A.COL1,A.COL4;

可以执行

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:022016猴年福章
日期:2016-02-18 09:31:30
20#
发表于 2012-5-17 13:20 | 只看该作者
〇〇 发表于 2012-5-17 12:44
SELECT gs::number AS n1 FROM generate_series(1,9) gs

SELECT gs::number AS n1 FROM generate_series(1,9) gs;

N1
1
2
3
4
5
6
7
8
9
这个这个真的会有人不高兴地。呵呵差不多就行了。不要再贴语句了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表