请不要吐槽使用的上古框架,这是公司的屎山项目,必须得用!!!
开发环境:eclipse 2018.09
JDK 版本:JDK 1.8.0_181
orm 框架:ibatis 2.3.4
数据库版本:Oracle 11g
SQL 语句因为公司行业敏感,不能放出来给大家看,大概类似下面的代码
with TEMP_TABLE AS(
SELECT ITEM_CODE,ITEM_NAM·····
FROM TABLE1
WHERE ITEM_CODE = '***'
ORDER BY ITEM_CODE
)
SELECT A.ITEM_LVL,A.MARK,B.ITEM_NAM,SUM(A.VALUE) VALUE
FROM TABLE2 A
LEFT JOIN TEMP_TABLE B ON A.ITEM_CODE = B.ITEM_CODE
GROUP BY A.ITEM_LVL,A.MARK,B.ITEM_NAM
具体的错误表现是程序中查询时VALUE
始终为 0,但是把程序执行的 SQL 拿到 plsql 中执行VALUE
存在值
1
huntcool001 2020-12-29 20:58:36 +08:00
Mysql 有 general log, PQ 应该也有类似的东西. 直接连上服务端看日志,看你的代码客户端发过来的查询语句是什么.
|
2
xuanbg 2020-12-29 21:16:09 +08:00
value 是关键词,用``包一下
|
3
lordofhollows 2020-12-29 21:50:34 +08:00
可能是因为有 value 为 null 的记录,可以试下:sum(nvl(a.value, 0))
|
4
yveJohn OP @xuanbg 只是个例子,实际上不是 value
@lordofhollows value 这个值没有空数据,而且如果是 value 存在 null 数据,为什么 plsql 能查询出正确结果呢? @huntcool001 是个好思路,我现在 oracle 的日志看能不能找到原因。 |
5
tikazyq 2020-12-30 09:38:24 +08:00
为啥不是刘德华?
|
9
cyrivlclth 2020-12-30 14:29:02 +08:00
本吴彦祖提供一个思路,上次某人遇到这个问题是时区的原因...
|
10
hodur 2020-12-30 15:51:24 +08:00
我上次遇到这样的问题是因为字段映射错误,在 SUM(A.VALUE) 加个 alias 试试
|
11
yveJohn OP |