goodluck_wgw 2012-12-04 11:07
浏览 231
已采纳

sql语句连接查询的问题

我现在有两张表,一张target目标表,一张费用表,目标表一个用户每个月就一条记录,比如设定的各个要完成的目标,费用表可能一个月有好几条记录,记录已完成的数据,表之间的关联用用户的ID,现在遇到问题,想在一个列表中展示目标数据和已完成数据,目标表有目标月份日期字段,费用表有生效日期字段
[table]
目标月份 目标标保 已完成标保 目标佣金 已完成佣金 目标件数 已完成件数
2012-11 1000 500 200000 2000 500 50
[/table]
我现在sql语句如下
[code="java"] select SALES_CODE,target.TARGET_MONTH as targetMonth,target.STD_PREM as stdPrem,target.BROKERAGE as brokerage,target.CASES as cases,
d.toStdPrem as totStdPrem,d.toBrokerage as totBrokerage,d.toCases as totCases
from AB_TARGET target inner join
(select sum(com.STANDARD_PAYMENT) as toStdPrem,
sum(com.FINAL_PAY_AMOUNT) as toBrokerage,
count(com.id) as toCases,com.SALE_ID,SOURCE
from COMMISSION_INFO com


<![CDATA[ com.EFFECTIVE_DATE >= #{targetMonthBegin}]]>


<![CDATA[ and com.EFFECTIVE_DATE <= #{targetMonthEnd}]]>


group by com.sale_id, com.source)d on target.SALES_CODE = d.SALE_ID

AND target.SALES_CODE = #{salesCode} and d.source='1801'



<![CDATA[ target.TARGET_MONTH >= #{targetMonthBegin}]]>


<![CDATA[ and target.TARGET_MONTH <= #{targetMonthEnd}]]>

      <if test="@Ognl@isNotEmpty(salesName)">
            AND target.SALES_CODE =#{salesName} 
        </if>
    <if test="@Ognl@isNotEmpty(sortColumns)">
        ORDER BY ${sortColumns}
    </if>
    </where>[/code]

查询出的数据不正确,比如目标表11月份和12月份有两条数据,而费用表仅11月份有数据,结果按照上面语句查询出来11月份和12月份的费用已完成的情况是一样的,正确的费用表12月份查出来相应已完成的记录应该为空,求解答

  • 写回答

3条回答 默认 最新

  • tearhero 2012-12-04 13:10
    关注

    怀疑这个联表条件(on target.SALES_CODE = d.SALE_ID)的正确性?
    有日期条件的时候查询结果才是对的,很有可能是日期条件+target.SALES_CODE = d.SALE_ID这个才能真正定位目标表对应的费用明细;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格