一个关于统计的有关问题
一个关于统计的问题
cmd.CommandText = "SELECT fdName, SUM(fdPay) - SUM(fdKK) + SUM(fdBT) AS fdpaycount FROM v_EveryDayWorkList WHERE (YEAR(fdDate) = " + dtTime.Year + ") AND (MONTH(fdDate) = " + dtTime.Month + ") GROUP BY fdWorkerID, fdName";
两个表通过关联来显示,但是现在出现一个问题,表A的一第记录,对应表B中的多条记录,当表A中的字段fdKK,fdBT有数值的时候,因为关联的关系统,视图v_EveryDayWorkList中的相关记录中的fdKK,fdBT字段,都会有相应的值,这时就会造成sum(fdKK)和sum(fdBT)值错误.本来表A中的某条记录有fdKK,fdBT字段有值,不管表B中有多少条相关记录,这条记录都只统计一次fdBT和fdKK,这个SQL语句要怎么写呢?
------解决方案--------------------
cmd.CommandText = "SELECT fdName, SUM(fdPay) - SUM(fdKK) + SUM(fdBT) AS fdpaycount FROM v_EveryDayWorkList WHERE (YEAR(fdDate) = " + dtTime.Year + ") AND (MONTH(fdDate) = " + dtTime.Month + ") GROUP BY fdWorkerID, fdName";
两个表通过关联来显示,但是现在出现一个问题,表A的一第记录,对应表B中的多条记录,当表A中的字段fdKK,fdBT有数值的时候,因为关联的关系统,视图v_EveryDayWorkList中的相关记录中的fdKK,fdBT字段,都会有相应的值,这时就会造成sum(fdKK)和sum(fdBT)值错误.本来表A中的某条记录有fdKK,fdBT字段有值,不管表B中有多少条相关记录,这条记录都只统计一次fdBT和fdKK,这个SQL语句要怎么写呢?
------解决方案--------------------
- SQL code
select a.fdKK,a.fdBT,(select count(*) from B where b.fdKK=a.fdKK and b.fdBT=a.fdBT) from a
------解决方案--------------------
有没有测试数据来说明一下?
------解决方案--------------------