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