为什么这样写实错误的?!!!!!!

freedom1980 2005-07-21 03:19:31
我想求WHM_EnterBill和WHM_OutBill两张表字段TotalMoney的差的累加

于是我写了如下语句
select isnull(sum(e.TotalMoney),0)-isnull(sum(o.TotalMoney),0)
from
WHM_EnterBill E,
WHM_OutBill O
where
e.acceptdate<='2006-1-1'
and o.POSTDATE<='2006-1-1'

但是实际上是错误的 数据比真实数据偏差太大
但是WHY ???
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiushaoye 2005-07-21
  • 打赏
  • 举报
回复
select (select IsNull(sum(IsNull(sz,0)),0)
from WHM_EnterBill
where acceptdate <='2006-1-1') -
(select IsNull(sum(IsNull(sz,0)),0)
from WHM_OutBill
where POSTDATE<='2006-1-1')
jiushaoye 2005-07-21
  • 打赏
  • 举报
回复
假如 a: 2005-01-01 5 b: 2005-03-01 8
2005-02-01 10 2005-03-19 6
你想得到是数据是多少,是不是 1 ?你的那种写法算出来是 2
seu31199113 2005-07-21
  • 打赏
  • 举报
回复
应该没有问题呀!
先拆开算算,看看还是你自己算错了!!
rivery 2005-07-21
  • 打赏
  • 举报
回复
你这样写的结果是将
WHM_EnterBill表中acceptdate<='2006-1-1'的记录 和
WHM_OutBill表中POSTDATE<='2006-1-1'的记录 进行交叉联合。
然后对新的结果集进行sum运算。
summerICEREDTEA 2005-07-21
  • 打赏
  • 举报
回复
如果表没有关联
可以这样
select
(select isnull(sum(e.TotalMoney),0) from WHM_EnterBill e where e.acceptdate<='2006-1-1')
-
(select isnull(sum(o.TotalMoney),0) from WHM_OutBill o where o.POSTDATE<='2006-1-1') b
) c
summerICEREDTEA 2005-07-21
  • 打赏
  • 举报
回复
恩 我是错误的-。-
我本来以为这样可以的 hoho
summerICEREDTEA 2005-07-21
  • 打赏
  • 举报
回复
select a - b from
(select isnull(sum(e.TotalMoney),0) from WHM_EnterBill e where e.acceptdate<='2006-1-1') a
inner join
(select isnull(sum(o.TotalMoney),0) from WHM_OutBill o where o.POSTDATE<='2006-1-1') b
) c

vivianfdlpw 2005-07-21
  • 打赏
  • 举报
回复
表之间没有关联,应该由某个字段进行关联
phantomMan 2005-07-21
  • 打赏
  • 举报
回复
两个表之间的连续呢?

比如要加:
select isnull(sum(e.TotalMoney),0)-isnull(sum(o.TotalMoney),0)
from WHM_EnterBill E,WHM_OutBill O
where e.acceptdate<='2006-1-1' and o.POSTDATE<='2006-1-1'
and e.id=o.id --这里要添加限定的

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧