每天发货产生记录如下:表A
客户,单号,数量,单价,金额
01 14001 500 20 10000
02 14002 500 30 15000
……
查总欠款时,我用的方法是:
select 客户初欠+sum(表A.金额) from 客户表
客户一多,速度极慢
求解决办法
------解决思路----------------------
能不能考虑将用到两个函数的地方先用语句处理到临时表中,在用临时表和主表关联进行查询,这样避免了逐条计算
------解决思路----------------------
这样的函数适合于单个客户的统计,全体统计还是直接分组统计好
WITH YS AS (
SELECT ccuscode,
CONVERT(DECIMAL(18,2),
SUM(iquantity* cinvunitcost)
) ysimoney
FROM rdrecords
WHERE Isnull(cinvfahuodate,'') <> ''
GROUP BY ccuscode
),
SS AS (
...
)
SELECT id,
ccuscode,
ccusabbname,
imoney,
ys.ysimoney,
ss.ssimoney,
(imoney - ISNULL(ys.ysimoney,0) + ISNULL(ss.ssimoney,0)) AS ye
FROM customer
LEFT JOIN YS ON ys.ccuscode = customer.ccuscode
LEFT JOIN SS ON ss.ccuscode = customer.ccuscode