简单的就是一个业务 两个表 一个表a放单头,一个表b放明细,一张单子可以有N条明细,两个表用单号关联,我现在需要查询出业务员做了几张单子,以及这些单子总共的明细数
我用的是
select sum(decode(a.单号,null,0,1))单子数量,sum(decode(b.明细,null,0,1))明细数量 from a,b where a.单号= b.单号
这样查询出来的结果是 单子数量 = 明细数量
实际上是 单子数量要小于明细数量的
我用的是
select sum(decode(a.单号,null,0,1))单子数量,sum(decode(b.明细,null,0,1))明细数量 from a,b where a.单号= b.单号
这样查询出来的结果是 单子数量 = 明细数量
实际上是 单子数量要小于明细数量的
count( b.明细) 明细数量
from a,b
where a.单号= b.单号
group by a.单号,b.明细正确的话,记得给分哦
tab_a as (select a.单号,b.明细,count( disinct a.单号) 单子数量,
count( b.明细) 明细数量
from a,b
where a.单号= b.单号
group by a.单号,b.明细
)
select *
from tab_a AA
where AA.明细数量=(select max(BB.明细数量) from tab_a BB
where AA.单号=BB.单号 and AA.明细=BB.明细
)
(select a.业务员编码, count( disinct a.单号) a_单子数量, count( b.明细) a_明细数量
from a_单头 a ,a_明细 b
where a.单号= b.单号
group by a.单号,b.明细 )s1,
(select a.业务员编码, count( disinct a.单号) b_单子数量, count( b.明细) b_明细数量
from b_单头 a ,b_明细 b
where a.单号= b.单号
group by a.单号,b.明细 )s2
where s1.业务员编码 = s2.业务员编码
FROM (SELECT A.业务编号,COUNT(A.单号) '业务单据数' FROM A ) C,
(SELECT A.业务编号,COUNT(B.单号) '业务明细数' FROM A,B WHERE A.单号=B.单号
GROUP A.业务编号) D
WHERE C.业务编号=D.业务编号;
FROM (SELECT A.业务编号,COUNT(A.单号) '业务单据数' FROM A GROUP BY A.业务编号) C,
(SELECT A.业务编号,COUNT(B.单号) '业务明细数' FROM A,B WHERE A.单号=B.单号
GROUP A.业务编号) D
WHERE C.业务编号=D.业务编号;
FROM (SELECT A.业务编号,COUNT(A.单号) '业务单据数' FROM A GROUP BY A.业务编号) C,
(SELECT A.业务编号,COUNT(B.单号) '业务明细数' FROM A,B WHERE A.单号=B.单号
GROUP BY A.业务编号) D
WHERE C.业务编号=D.业务编号;这次绝对OK!