SELECT sum(X.XSTDMX_FSL2),CASE WHEN s.xstd_tdls=x.xstdmx_tdls and s.xstd_ywrq like '201803%' and s.xstd_rybh='111' AND (X.XSTDMX_WLBH LIKE '0302%' OR X.XSTDMX_WLBH IN (0301020000254,0301020000203)) THEN X.XSTDMX_FSL2 ELSE '' END FROM cwbase4.lc0049999.XSTDMX x ,cwbase4.lc0049999.XSTD s GROUP BY CASE WHEN s.xstd_tdls=x.xstdmx_tdls and s.xstd_ywrq like '201803%' and s.xstd_rybh='111' AND (X.XSTDMX_WLBH LIKE '0302%' OR X.XSTDMX_WLBH IN (0301020000254,0301020000203)) THEN X.XSTDMX_FSL2 ELSE '' END;实际数值只有几千,但显示的61651946917.041这个数

解决方案 »

  1.   

    sum group by 那里写的不对,改一改
      

  2.   

    两个数据表,一个是XSTD(销售提单),一个是XSTDMX(销售提单明细),XSTD表中的主要字段包括TDLS(提单流水号),YWRQ(业务日期),RYBH(人员编号);XSTDMX表中主要字段包括TDMXLS(提单明细流水号)这个与提单流水号一致,还有WLBH(物料编号),FSL2(辅数量2)
    这几个是要用到的字段,统计XSTD中人员在3月份的销售数量
      

  3.   

    具体一点是哪里错了
    楼主的问题也需要描述具体点建议楼主列出表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  4.   

    具体一点是哪里错了
    楼主的问题也需要描述具体点建议楼主列出表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。表1:XSTD                                                                                                   表2:XSTDMX
    XSTD_TDLS    XSTD_YWRQ    XSTD_RYBH                                         XSTDMX_TDLS    XSTDMX_WLBH     XSTDMX_FSL2
       001                     20180304            111                                                           001                 0301020000254            1000
       002                     20180306            111                                                           002                 0302000000003            1385
    以上是数据表的大概结构,TDLS相等,需要通过表1的YWRQ和RYBH对表2中的FLS2进行求和,因为WLBH(物料编号)的FSL2(辅数量2)并不都是公斤,所以要加条件
    用的是SQL SERVER2005
      

  5.   

    1.统计3月份的数据,在where那里加条件,而不是用case when 子句
    2.X.XSTDMX_WLBH IN (0301020000254,0301020000203)) ,这个列我相信是字符串而不是数值,所以后面的值要加上引号,否则可能会导致数据不正确甚至报数据转换失败、溢出,截断等错误
    3.判断2018年3月份的数据,可以用日期 between ‘20180301’ and ‘20180331’
    4.2个表关联不是用case when,同样用where条件关联
    SELECT sum(X.XSTDMX_FSL2)
      FROM cwbase4.lc0049999.XSTDMX x ,cwbase4.lc0049999.XSTD s
        WHERE s.xstd_tdls=x.xstdmx_tdls
      AND s.xstd_rybh='111' 
      AND (X.XSTDMX_WLBH LIKE '0302%' OR X.XSTDMX_WLBH IN ('0301020000254','0301020000203')
      AND s.xstd_ywrq BETWEEN '20180301' AND '20180331'
    我想这是你需要的脚本