1、基础不够扎实,使用的句子是下面的结果
<select id="relieveTotal" resultType="java.lang.Float">
SELECT SUM(SALES_AMOUNT) FROM TB_ORDER TR
WHERE TR.USER_ID = #{userId}
AND TR.SALES_TIME >= TO_DATE(TO_CHAR(
(SELECT MAX(W.WKH_MTIME)
FROM TB_WKH W
WHERE W.USER_ID = #{userId}
AND W.WKH_DIR = 0
GROUP BY W.USER_ID ) ,
'YYYY-MM-DD' ) , 'YYYY-MM-DD' )
</select>
如何可以加一列的数据(只有一个时间值,就是下面的部分代码的结果)
SELECT MAX(W.WKH_MTIME)
FROM TB_WKH W
WHERE W.USER_ID = 2
AND W.WKH_DIR = 0
GROUP BY W.USER_ID
问题一、
以上2端代码都可以得到结果,怎么把他们的结果合并起来,输出-----变成一个一行两列(小数和时间个一列)的结果出来,
哪个知道的帮帮忙
问题二、
前面的那一段代码,报错:Cause: java.sql.SQLDataException: ORA-01861: 文字与格式字符串不匹配
什么原因,知道的帮帮忙,我现在不知道怎么更改:
目前我只能采取变通的方法------变成resultMap的方法试一试
<select id="relieveTotal" resultMap="total_result"> <!-- 更改返回的数据类型 -->
SELECT SUM(SALES_AMOUNT) SALES_AMOUNT <!-- 用一个同类型的字段暂存 -->
FROM TB_ORDER TR
WHERE TR.USER_ID = #{userId}
AND TR.SALES_TIME >= TO_DATE(TO_CHAR(
(SELECT MAX(W.WKH_MTIME)
FROM TB_WKH W
WHERE W.USER_ID = #{userId}
AND W.WKH_DIR = 0
GROUP BY W.USER_ID ) ,
'YYYY-MM-DD' ) , 'YYYY-MM-DD' )
</select>
第一个回答的 报错了
ORA-00937: 不是单组分组函数
00937. 00000 - "not a single-group group function"
*Cause:
*Action:
SELECT
SUM( SALES_AMOUNT ),
w.maxTime
FROM
TB_ORDER TR
INNER JOIN (
SELECT
WKH.user_id,
MAX( WKH.WKH_MTIME ) maxTime
FROM
TB_WKH WKH
WHERE
WKH.USER_ID = 2
AND WKH.WKH_DIR = 0
) w ON TR.user_id = w.user_id
WHERE
tr.sales_time <= w.maxTime
你两个表中的user_id应该是一个表中的,所以只传一次userId条件就行了