- 浏览: 73935 次
- 性别:
- 来自: 天津
文章分类
最新评论
1.错误的sql语句:此sql语句报错信息是:group by 后面的标识符无效(字段名无效)
错误原因:因为使用了子查询,而group by后面是子查询的别名,所以无效。
先后顺序:1.where条件 , 2分组,3.集合函数(或者子查询),4.having筛选
反推理解:由于用了sum集合函数,所以子查询报错了,因此说明集合函数和子查询是同一个档次的(同时执行)
注意:查询中的执行步骤:先分组,在聚合,最后筛选。。。(where ,分组,集合函数,筛选)
select
t1.fund_id,
(select name from T_PUBMOFDEPT where id=t.zg_dept_id) DEPT_NAME,
(select name from t_pubagency where id=t.agency_id) AGENCY_NAME,
t.annual,
t.item_name,
(select name from T_PUBBDGSOURCE where id=t1.bdgsrc_id) BDGSRC_NAME,
(select name from T_PUBBGTSOURCE where id=t1.bgtsrc_id) BGTSRC_NAME,
(select name from T_PUBFUNDTYPE where id=t1.fundtype_id) FUNDTYPE_NAME,
(select name from t_pubexpfunc where id=t.expfunc_id) EXPFUNC_NAME,
sum(t1.amount) amount,
(select BGT_FILE_NO from TB_BGT_DEPT_BGTFILE where BGT_FILE_ID=t.bgt_file) BGT_FILE,
t.super_rev_file,
t.rev_file,
(select name from T_PUBFUNDCLASS where id=(select FUNDCLASS_ID from tb_bgt_item where ITEM_ID=t.item_id)) FUNDCLASS_NAME,
(select name from T_PUBEXPECONORMIC where id=(select eco_id from tb_bgt_fund where id=t1.fund_id)) ECO_NAME,
(select name from T_PUBPROTYPE where id=(select PROTYPE_ID from tb_bgt_item where ITEM_ID=t.item_id)) PROTYPE_NAME,
t.sn,
(select name from T_PUB_COUNTY_DISP where id=t.county_disp_id) COUNTY_DISP_NAME,
(select name from T_PUBBASESVR where id=t.basesvr_id) BASESVR_NAME,
t.ANNOTATION
from tb_bgt_item_info t
left join TB_BGT_ITEM_AMOUNT_SUB t1
on t.ITEM_ID=t1.item_ls_id
where 1=1
and t.annual=2016
group by fund_id,DEPT_NAME,AGENCY_NAME,item_name, BDGSRC_NAME,BGTSRC_NAME,FUNDTYPE_NAME,EXPFUNC_NAME,
BGT_FILE,super_rev_file,rev_file,FUNDCLASS_NAME,ECO_NAME, PROTYPE_NAME,sn,COUNTY_DISP_NAME,BASESVR_NAME,ANNOTATION
from tb_bgt_item_info t
left join TB_BGT_ITEM_AMOUNT_SUB t1
on t.ITEM_ID=t1.item_ls_id
where 1=1
and t.annual=2016
group by fund_id,DEPT_NAME,AGENCY_NAME,item_name, BDGSRC_NAME,BGTSRC_NAME,FUNDTYPE_NAME,EXPFUNC_NAME,
BGT_FILE,super_rev_file,rev_file,FUNDCLASS_NAME,ECO_NAME, PROTYPE_NAME,sn,COUNTY_DISP_NAME,BASESVR_NAME,ANNOTATION
2.正确的sql语句:
修改过程:现在group by后面不是子查询的别名了,而是子查询里面的表的某个字段
注意:还添加了CKLW字段,这个字段没写在group by后面竟然没报错
没报错的原因:因为这一行里面有REV_FILE 字段
select
case when t.REV_FILE is not null then '允许' else '不允许' end IS_CKLW,
t1.fund_id,
(select name from T_PUBMOFDEPT where id=t.zg_dept_id) DEPT_NAME,
(select name from t_pubagency where id=t.agency_id) AGENCY_NAME,
t.annual,
t.item_name,
(select name from T_PUBBDGSOURCE where id=t1.bdgsrc_id) BDGSRC_NAME,
(select name from T_PUBBGTSOURCE where id=t1.bgtsrc_id) BGTSRC_NAME,
(select name from T_PUBFUNDTYPE where id=t1.fundtype_id) FUNDTYPE_NAME,
(select name from t_pubexpfunc where id=t.expfunc_id) EXPFUNC_NAME,
sum(t1.amount) amount,
(select BGT_FILE_NO from TB_BGT_DEPT_BGTFILE where BGT_FILE_ID=t.bgt_file) BGT_FILE,
t.super_rev_file,
t.rev_file,
(select name from T_PUBFUNDCLASS where id=(select FUNDCLASS_ID from tb_bgt_item where ITEM_ID=t.item_id)) FUNDCLASS_NAME,
(select name from T_PUBEXPECONORMIC where id=(select eco_id from tb_bgt_fund where id=t1.fund_id)) ECO_NAME,
(select name from T_PUBPROTYPE where id=(select PROTYPE_ID from tb_bgt_item where ITEM_ID=t.item_id)) PROTYPE_NAME,
t.sn,
(select name from T_PUB_COUNTY_DISP where id=t.county_disp_id) COUNTY_DISP_NAME,
(select name from T_PUBBASESVR where id=t.basesvr_id) BASESVR_NAME,
case when t.REV_FILE is not null then '允许' else '不允许' end IS_CKLW,
t1.fund_id,
(select name from T_PUBMOFDEPT where id=t.zg_dept_id) DEPT_NAME,
(select name from t_pubagency where id=t.agency_id) AGENCY_NAME,
t.annual,
t.item_name,
(select name from T_PUBBDGSOURCE where id=t1.bdgsrc_id) BDGSRC_NAME,
(select name from T_PUBBGTSOURCE where id=t1.bgtsrc_id) BGTSRC_NAME,
(select name from T_PUBFUNDTYPE where id=t1.fundtype_id) FUNDTYPE_NAME,
(select name from t_pubexpfunc where id=t.expfunc_id) EXPFUNC_NAME,
sum(t1.amount) amount,
(select BGT_FILE_NO from TB_BGT_DEPT_BGTFILE where BGT_FILE_ID=t.bgt_file) BGT_FILE,
t.super_rev_file,
t.rev_file,
(select name from T_PUBFUNDCLASS where id=(select FUNDCLASS_ID from tb_bgt_item where ITEM_ID=t.item_id)) FUNDCLASS_NAME,
(select name from T_PUBEXPECONORMIC where id=(select eco_id from tb_bgt_fund where id=t1.fund_id)) ECO_NAME,
(select name from T_PUBPROTYPE where id=(select PROTYPE_ID from tb_bgt_item where ITEM_ID=t.item_id)) PROTYPE_NAME,
t.sn,
(select name from T_PUB_COUNTY_DISP where id=t.county_disp_id) COUNTY_DISP_NAME,
(select name from T_PUBBASESVR where id=t.basesvr_id) BASESVR_NAME,
t.ANNOTATION
from tb_bgt_item_info t
left join TB_BGT_ITEM_AMOUNT_SUB t1
on t.ITEM_ID=t1.item_ls_id
where 1=1
and t.annual=2016
group by fund_id,t.zg_dept_id,t.agency_id,annual,item_name,t1.bdgsrc_id,t1.bgtsrc_id,t1.fundtype_id,t.expfunc_id,
t.bgt_file,super_rev_file,rev_file,t.item_id,t1.fund_id,sn,t.county_disp_id,t.basesvr_id,ANNOTATION
from tb_bgt_item_info t
left join TB_BGT_ITEM_AMOUNT_SUB t1
on t.ITEM_ID=t1.item_ls_id
where 1=1
and t.annual=2016
group by fund_id,t.zg_dept_id,t.agency_id,annual,item_name,t1.bdgsrc_id,t1.bgtsrc_id,t1.fundtype_id,t.expfunc_id,
t.bgt_file,super_rev_file,rev_file,t.item_id,t1.fund_id,sn,t.county_disp_id,t.basesvr_id,ANNOTATION
发表评论
-
oralce定时器
2017-12-07 14:48 3661.在jobs下面,有个‘动态监控定时器’2.在DBMS_ ... -
对比两个sql的查询结果是否一样
2017-11-06 13:49 1869以第一个sql为标准,如果查询出两个sql的结果有不一样的地 ... -
+号是左右连接
2017-10-30 10:08 314TB_BGT_INFO.BGT_ID = TB_QUOTA_ ... -
创建用户
2017-09-21 15:57 283---创建用户 -- Create the user cr ... -
程序中的事务
2017-09-19 10:20 5401. sql.append("begin &q ... -
merge用法
2017-08-08 10:40 388merge into tb_car_vehpartsprice ... -
exists 是否存在
2017-07-08 13:04 469链接:http://www.cnblogs.com/net ... -
insert的时候select,update的时候create。exists相当于in
2016-07-19 15:28 375insert into tp_menu(MENU_ID,m ... -
sql中的回滚,回车
2016-06-01 09:55 442sql11.append("declare be ... -
insert blob类型的数据
2016-05-16 14:56 606相关连接1:http://blog.csdn.net/cd ... -
广西非税:从创建表空间到导入包
2016-03-25 16:19 306create tablespace gxfs datafi ... -
根据外键找表
2016-03-07 17:18 282select * from user_cons_colum ... -
修改表空间大小
2016-03-07 15:28 582--修改表空间大小alter database da ... -
oracle的ROW_NUMBER() OVER函数的基本用法
2016-02-17 09:36 735转自:http://www.cnblogs.com/ic ... -
where与having的区别
2016-02-05 09:13 523注意:查询中的执行步骤:先分组,在聚合,最后筛选。。。(w ... -
oralce各种练习题
2016-02-05 09:12 722ORACLE课堂练习:----1.员工表create ta ... -
表空间、权限、导入导出,连起来就是一套。导出空表问题
2016-02-03 13:35 7181.这是在查表所有表空 ... -
只安装plsql不安装oralce
2016-02-03 09:26 739注意:只安装plsql不安装oracle,貌似不能imp, ... -
dblinks
2016-01-26 10:35 563第一个人: 1.创建dblink语法: CREATE ... -
网:exp\imp 导入导出命令使用(相关关键字)
2016-01-11 10:31 619使用方法 用exp命令导 ...
相关推荐
### Group By 和 Order By 的使用方法及组合应用 在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP ...
SQL 中 GROUP BY 的用法及聚合函数 GROUP BY 是 SQL 中的一种分组查询语句,通常与聚合函数配合使用。GROUP BY 语句根据一个或多个列将查询结果分组,并对每组计算聚合函数的值。 在使用 GROUP BY 语句时,需要...
本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...
1、 如果使用 groupby table转换为流的时候只能用toRetractDstream val rDstream: DataStream[(Boolean, (String, Long))] = table.toRetractStream[(String,Long)] 2、 toRetractDstream 得到的第一个boolean型...
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
在Oracle数据库中,`GROUP BY`语句是用于将数据行根据一个或多个列的值进行分组,以便对每个组执行聚合函数(如`SUM`、`COUNT`、`AVG`等)。`GROUP BY`的主要作用在于将具有相同列值的数据归类到一起,从而可以对每...
MySQL 数据库中 group by 语句与 update 语句的用法研究 本论文对 MySQL 数据库中的 group by 语句和 update 语句进行了深入研究,讨论了这些语句在数据库查询和修改中的应用,并给出了具体的解决方案。 一、MySQL...
在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...
### 清晰解读Group By:理解SQL中的分组与聚合 在数据库查询语言SQL中,`GROUP BY`是一个非常重要的概念,它可以帮助我们对数据进行分组并执行聚合操作,从而得出更有价值的信息。本文将从`GROUP BY`的基础概念出发...
【Group_by 详解】 在数据库查询中,`GROUP BY`语句是一个至关重要的部分,它允许用户根据指定的字段或表达式对数据进行分组,以便进行聚合计算或按组进行分析。`GROUP BY`的基本概念是将具有相同字段值的数据行...
### 处理GROUP BY 查询速度慢的问题 在实际项目中,由于数据表的记录数量庞大,经常遇到查询速度缓慢的问题。本文将详细记录一次针对GROUP BY查询效率低下的排查及优化过程,希望能够对读者有所帮助。 #### 问题...
"Lucene group by" 指的就是在 Lucene 中实现基于特定字段的分组操作,类似于 SQL 中的 GROUP BY 子句。这使得用户能够按类别聚合文档,例如,根据作者、日期或其他分类标准来查看搜索结果。 在 Lucene 中,分组...
SQL GROUP BY 语句 SQL GROUP BY 语句
SQL GROUP BY 语句是数据库查询中非常重要的一个部分,它允许我们对数据进行分组,以便于统计和分析。在处理大型数据集时,GROUP BY 与聚合函数(如 SUM、COUNT、AVG、MAX 和 MIN)一起使用,能够帮助我们汇总数据,...
优化 Group By 查询速度的实践经验 在实际项目中,遇到了表数据量大导致查询速度很慢的问题。通过记录和优化过程,总结出一些有价值的经验,希望能够帮助读者解决类似的问题。 知识点1:Group By 查询的索引设置 ...
Sql 聚合函数和 group by 的关系详解 Sql 聚合函数和 group by 是 SQL 语言中两个非常重要的概念,它们之间存在紧密的联系。那么,什么是聚合函数?什么是 group by?它们之间的关系是什么?在本文中,我们将详细地...
SQL中的`GROUP BY`语句是数据库查询中的一个重要部分,它用于将数据按照一个或多个列的值进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`和`MAX`等。下面我们将详细讨论`GROUP BY`的使用方法及其相关...
- 对于 `GROUP BY CUBE(A, B)`,产生的分组包括:`GROUP BY A, B`、`GROUP BY A`、`GROUP BY B` 和 `GROUP BY NULL`。 相比之下,`ROLLUP` 会按照层次递减的方式生成分组,只包括:`GROUP BY A, B`、`GROUP BY A` ...
「GROUP BY 与 ROLLUP 子句的使用」 `GROUP BY` 语句是 SQL 中一种常用的语句,用来对查询结果进行分组并进行聚合操作。但是,如果我们想要对分组结果进行汇总统计时,使用 `ROLLUP` 子句可以实现这一功能。 ...