SELECT o.*, p.垫付款未收已付出票 AS 垫付款未收已付出票
FROM (SELECT m.*, n.授信余额 AS 授信余额, n.授信总额 AS 授信总额
FROM (SELECT k.*, l.垫付款已收已付 AS 垫付款已收已付
FROM (SELECT i.*, j.垫付款已收未付 AS 垫付款已收未付
FROM (SELECT g.*,
h.垫付款未收已付未出票 AS 垫付款未收已付未出票
FROM (SELECT e.*,
f.垫付款未收未付 AS 垫付款未收未付
FROM (SELECT c.*,
d .代收货款未收 AS 代收货款未收
FROM (SELECT a.*,
b.代收货款已收 AS 代收货款已收
FROM (SELECT 目的地,
收货人姓名 AS 客户名,
SUM(总体积) AS 方量,
SUM(总重量) AS 吨数,
SUM(总运费) AS 总运费,
(SUM(总运费)
- SUM(实收运费))
AS 未收运费
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
GROUP BY 目的地, 收货人姓名)
a LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款已收
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
AND (货款类型 = '代收')
AND (实收货款总额 > 0)
GROUP BY 目的地,
收货人姓名) b ON
a.目的地 = b.目的地 AND
a.客户名 = b.客户名)
c LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款未收
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(货款类型 = '代收') AND
(实收货款总额 = 0)
GROUP BY 目的地, 收货人姓名) d ON
c.目的地 = d .目的地 AND
c.客户名 = d .客户名)
e LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名,
SUM(货款) AS 垫付款未收未付
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型,
2) = ' 垫付 ') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) f ON
e.目的地 = f.目的地 AND e.客户名 = f.客户名)
g LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款未收已付未出票
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型, 2)
= '垫付') AND (实付金额 > 0) AND
(支付日期 > getdate() - 25)
GROUP BY 目的地, 收货人姓名) h ON
g.目的地 = h.目的地 AND g.客户名 = h.客户名)
i LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收未付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) j ON
i.目的地 = j.目的地 AND i.客户名 = j.客户名)
k LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收已付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0)
GROUP BY 目的地, 收货人姓名) l ON k.目的地 = l.目的地 AND
k.客户名 = l.客户名) m LEFT OUTER JOIN
(SELECT 联系人 AS 客户名, 所在地 AS 目的地, (最高授信 - 已用授信)
AS 授信余额, 最高授信 AS 授信总额
FROM 客户表) n ON m.客户名 = n.客户名 AND m.目的地 = n.目的地)
o LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付出票
FROM 运单表 where (开单日期 > '2006 - 3 - 1') AND (实收货款总额 = 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0) AND (支付日期 < getdate() - 25)
GROUP BY 目的地, 收货人姓名) p ON o.客户名 = p.客户名 AND
o.目的地 = p.目的地
WHERE 1=1
ORDER BY p.目的地, p.客户名
用下面的语句求和,会不会出问题:
try
while not adoquery1.eof do
begin
jh:=adoquery1.fieldbyname('方量').Asinteger;
yj:=adoquery1.fieldbyname('总运费').AsFloat;
ds:=adoquery1.fieldbyname('吨数').AsFloat;
cp:=adoquery1.fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=adoquery1.fieldbyname('垫付款未收已付未出票').AsFloat;
j:=0;
y:=0;
d:=0;
c:=0;
w:=0;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
adoquery1.next;
end;等等去截个图 把我想要的结果帖出来
FROM (SELECT m.*, n.授信余额 AS 授信余额, n.授信总额 AS 授信总额
FROM (SELECT k.*, l.垫付款已收已付 AS 垫付款已收已付
FROM (SELECT i.*, j.垫付款已收未付 AS 垫付款已收未付
FROM (SELECT g.*,
h.垫付款未收已付未出票 AS 垫付款未收已付未出票
FROM (SELECT e.*,
f.垫付款未收未付 AS 垫付款未收未付
FROM (SELECT c.*,
d .代收货款未收 AS 代收货款未收
FROM (SELECT a.*,
b.代收货款已收 AS 代收货款已收
FROM (SELECT 目的地,
收货人姓名 AS 客户名,
SUM(总体积) AS 方量,
SUM(总重量) AS 吨数,
SUM(总运费) AS 总运费,
(SUM(总运费)
- SUM(实收运费))
AS 未收运费
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
GROUP BY 目的地, 收货人姓名)
a LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款已收
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
AND (货款类型 = '代收')
AND (实收货款总额 > 0)
GROUP BY 目的地,
收货人姓名) b ON
a.目的地 = b.目的地 AND
a.客户名 = b.客户名)
c LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款未收
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(货款类型 = '代收') AND
(实收货款总额 = 0)
GROUP BY 目的地, 收货人姓名) d ON
c.目的地 = d .目的地 AND
c.客户名 = d .客户名)
e LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名,
SUM(货款) AS 垫付款未收未付
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型,
2) = ' 垫付 ') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) f ON
e.目的地 = f.目的地 AND e.客户名 = f.客户名)
g LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款未收已付未出票
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型, 2)
= '垫付') AND (实付金额 > 0) AND
(支付日期 > getdate() - 25)
GROUP BY 目的地, 收货人姓名) h ON
g.目的地 = h.目的地 AND g.客户名 = h.客户名)
i LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收未付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) j ON
i.目的地 = j.目的地 AND i.客户名 = j.客户名)
k LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收已付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0)
GROUP BY 目的地, 收货人姓名) l ON k.目的地 = l.目的地 AND
k.客户名 = l.客户名) m LEFT OUTER JOIN
(SELECT 联系人 AS 客户名, 所在地 AS 目的地, (最高授信 - 已用授信)
AS 授信余额, 最高授信 AS 授信总额
FROM 客户表) n ON m.客户名 = n.客户名 AND m.目的地 = n.目的地)
o LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付出票
FROM 运单表 where (开单日期 > '2006 - 3 - 1') AND (实收货款总额 = 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0) AND (支付日期 < getdate() - 25)
GROUP BY 目的地, 收货人姓名) p ON o.客户名 = p.客户名 AND
o.目的地 = p.目的地
WHERE 1=1
ORDER BY p.目的地, p.客户名
用下面的语句求和,会不会出问题:
try
while not adoquery1.eof do
begin
jh:=adoquery1.fieldbyname('方量').Asinteger;
yj:=adoquery1.fieldbyname('总运费').AsFloat;
ds:=adoquery1.fieldbyname('吨数').AsFloat;
cp:=adoquery1.fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=adoquery1.fieldbyname('垫付款未收已付未出票').AsFloat;
j:=0;
y:=0;
d:=0;
c:=0;
w:=0;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
adoquery1.next;
end;等等去截个图 把我想要的结果帖出来
begin
j:=0;
y:=0;
d:=0;
c:=0;
w:=0; First;
while not eof do
begin
jh:=fieldbyname('方量').Asinteger;
yj:=fieldbyname('总运费').AsFloat;
ds:=fieldbyname('吨数').AsFloat;
cp:=fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=fieldbyname('垫付款未收已付未出票').AsFloat;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
next;
end; 不想说什么,你看看就明白了
自己对齐一下
这里肯定是须要改的,像4楼的就行
begin
jh:=adoquery1.fieldbyname('方量').Asinteger;
yj:=adoquery1.fieldbyname('总运费').AsFloat;
ds:=adoquery1.fieldbyname('吨数').AsFloat;
cp:=adoquery1.fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=adoquery1.fieldbyname('垫付款未收已付未出票').AsFloat;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
adoquery1.next;
从中间的sql语句依次往外边走,逐句测试应该能找到问题的所在的
y:=0;
d:=0;
c:=0;
w:=0; First;
while not adoquery1.eof do
begin
jh:= jh + adoquery1.fieldbyname('方量').Asinteger;
yj:= yj + adoquery1.fieldbyname('总运费').AsFloat;
ds:= ds + adoquery1.fieldbyname('吨数').AsFloat;
cp:= cp + adoquery1.fieldbyname('垫付款未收已付出票').AsFloat;
wdx:= wdx +adoquery1.fieldbyname('垫付款未收已付未出票').AsFloat;
adoquery1.next;
end;