今天遇到了一个奇怪的问题,Oracle中,在PLSQL中写的group by 带参数的sql语句没有问题,但是在java程序中老是报错,异常是“not a group by expression”
我的语句是:
select to_char(day,'yyyy-mm-dd') as day, sum(card_cost) as card_cost,
sum(added_number) as added_number from report_member_added
where merchant_id='01058121104' and
to_char(day,'yyyy-mm-dd') between '2010-10-01' and '2010-10-26'
group by to_char(day,'yyyy-mm-dd') order by day
在group by里面传参数是为了做两种统计,一种是按日,一种是按月。
我不想分开写,感觉一个语句能搞定的统计,没必要写两个方法。
我的ibatis里面是这样写的:
<select id="queryMemberAdd" parameterClass="java.util.HashMap" resultMap="sumMember">
select to_char(day,#queryFormat#) as day, sum(card_cost) as card_cost,sum(added_number) as added_number from report_member_added
where merchant_id=#merchantId# and to_char(day,'yyyy-mm-dd') between #startDate# and #endDate#
<dynamic>
<isNotEmpty prepend="and" property="stroeId">
store_id=#storeId#
</isNotEmpty>
</dynamic>
group by to_char(day,#queryFormat#) order by day
</select>
从控制台可以看到参数已经传过去了,并且我将生成的预编译sql copy到PLSQL,再把参数传进去,完全没有问题。
后来尝试了很多方法,总算找到一种解决方案:
将ibatis里面的语句改一下,因为考虑到group by 里面传的是字符串,所以用$$传。
也就是:
<select id="queryMemberAdd" parameterClass="java.util.HashMap" resultMap="sumMember">
select to_char(day,$queryFormat$) as day, sum(card_cost) as card_cost,sum(added_number) as added_number from report_member_added
where merchant_id=#merchantId# and to_char(day,'yyyy-mm-dd') between #startDate# and #endDate#
<dynamic>
<isNotEmpty prepend="and" property="stroeId">
store_id=#storeId#
</isNotEmpty>
</dynamic>
group by to_char(day,$queryFormat$) order by day
</select>
但是发现生成的sql里面参数应该用''括起来的,所以我们需要在传参数的地方,比如:
String queryFormat="'yyyy-MM-dd'" 这样写。 “”里面再加上''。
另一个问题,就是flex中DataGrid列表里面,双击一行,得到其中的一个字段的值 。
调试了N久才找到,原来是用evt.itemRenderer.data.day;
private function onDoubleClick(evt:ListEvent):void{
var datagrid:DataGrid = evt.target as DataGrid;
var secondCom:MemberAddReportDetail=new MemberAddReportDetail();
var date:String=evt.itemRenderer.data.day;
Alert.show("date="+date);
CommonMethod.addNavigatorChild(new MemberAddReportDetail(),"门店新增会员报表",true);
}
好了,今天就总结到这里了,也算是今天的一点收获。希望对需要的朋友有所帮助。
分享到:
相关推荐
本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...
在实际应用中,经常需要同时使用 `GROUP BY` 和 `ORDER BY` 来处理数据。例如,在对数据进行分组后,可能还需要对每组内的数据进行排序。 - **基本语法**: ```sql SELECT column1, column2, ..., columnN FROM ...
### 处理GROUP BY 查询速度慢的问题 在实际项目中,由于数据表的记录数量庞大,经常遇到查询速度缓慢的问题。本文将详细记录一次针对GROUP BY查询效率低下的排查及优化过程,希望能够对读者有所帮助。 #### 问题...
通过记录和优化过程,总结出一些有价值的经验,希望能够帮助读者解决类似的问题。 知识点1:Group By 查询的索引设置 在优化 Group By 查询时,仅对 Group By 字段设置索引是不够的。需要将聚合函数(如 min、max ...
在使用 GROUP BY 语句时,需要注意错误的处理,例如 NOT A GROUP BY EXPRESSION 的错误,可以通过使用聚合函数来解决。 GROUP BY 语句是 SQL 中的一种强大工具,经常与聚合函数一起使用,用于对数据进行分组和计算...
废话不多说了,直接给大家贴代码了,具体代码如下所示: public class Person { public string FirstName{set;get;} public string LastName{set;...List<Person> personList=new List(); personList.Add
MySQL 数据库中 group by 语句与 update 语句的用法研究 本论文对 MySQL 数据库中的 group by 语句和 update 语句进行了深入研究,讨论了这些语句在数据库查询和修改中的应用,并给出了具体的解决方案。 一、MySQL...
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...
聚合函数在`GROUP BY`语句中起到关键作用,它们处理每个组内的多值问题。例如,`COUNT()`计算记录数,`SUM()`求和,`AVG()`计算平均值,`MAX()`和`MIN()`找出最大值和最小值。这些函数将一组数据转换为单个值,使得...
### 清晰解读Group By:理解SQL中的分组与聚合 在数据库查询语言SQL中,`GROUP BY`是一个非常重要的概念,它可以帮助我们对数据进行分组并执行聚合操作,从而得出更有价值的信息。本文将从`GROUP BY`的基础概念出发...
- **基本语法**:`GROUP BY`的基本使用方式如下: ```sql SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 这将统计`table_name`中`column_name`的不同值的数量。 - **HAVING子句**...
"Lucene group by" 指的就是在 Lucene 中实现基于特定字段的分组操作,类似于 SQL 中的 GROUP BY 子句。这使得用户能够按类别聚合文档,例如,根据作者、日期或其他分类标准来查看搜索结果。 在 Lucene 中,分组...
5. **子查询与连接**:`GROUP BY`可以与子查询和表连接一起使用,以处理更复杂的数据聚合需求。在这个例子中,`LEFT JOIN`用于连接`c_orderline2`表和`c_bpartner`表,以获取供应商信息。 综上所述,`GROUP BY`和`...
在升级MySQL到5.7后遇到的`GROUP BY`查询问题,通常与新的严格模式有关,理解这些变化并相应地调整代码是解决问题的关键。 总之,通过`SQL_CALC_FOUND_ROWS`和`FOUND_ROWS()`的结合使用,可以有效地在`GROUP BY`...
1、 如果使用 groupby table转换为流的时候只能用toRetractDstream val rDstream: DataStream[(Boolean, (String, Long))] = table.toRetractStream[(String,Long)] 2、 toRetractDstream 得到的第一个boolean型...
在处理大型数据集时,GROUP BY 与聚合函数(如 SUM、COUNT、AVG、MAX 和 MIN)一起使用,能够帮助我们汇总数据,找出特定条件下的总体趋势和统计信息。 GROUP BY 语句的基本语法如下: ```sql SELECT column_name,...
在标题和描述中提到的“mssql+group by 分页例子”是指在SQL Server(通常简称为mssql)中使用`GROUP BY`结合分页技术来处理大量数据的方法。这里我们将详细探讨这个主题,并给出实际的例子。 首先,`GROUP BY`子句...
### DataFrame 数据中的重复行处理:利用groupby进行累加合并详解 在数据分析过程中,经常会遇到包含重复行的数据集。这些重复行可能包含了重要的累积信息,简单地删除它们可能会导致信息丢失,进而影响分析结果的...