A表
AID
------
101
101
103
102
106
106
101
B表
BID
------
1033106
1033105
1033101
1033104
1033104注意:BID = '1033' + AID
希望得到以下的统计结果
ID A表 B表
-------------------------------
101 3 1
102 1 0
103 1 0
104 0 2
105 0 1
106 2 1以前曾经看过有类似的问题,但实在找不回来了,所以只能再问一次。
谢谢
AID
------
101
101
103
102
106
106
101
B表
BID
------
1033106
1033105
1033101
1033104
1033104注意:BID = '1033' + AID
希望得到以下的统计结果
ID A表 B表
-------------------------------
101 3 1
102 1 0
103 1 0
104 0 2
105 0 1
106 2 1以前曾经看过有类似的问题,但实在找不回来了,所以只能再问一次。
谢谢
count(1) [a表],
(select count(1) from b where right(bid,3) = a.aid) [b表]
from a
group by aid
能不能简单说明一下?
T-SQL里的说明,只是说这是记数函数
我们原来用的也是这样
insert into a values('101')
insert into a values('101')
insert into a values('103')
insert into a values('102')
insert into a values('106')
insert into a values('106')
insert into a values('101')
create table B(BID varchar(10))
insert into b values('1033106')
insert into b values('1033105')
insert into b values('1033101')
insert into b values('1033104')
insert into b values('1033104')
goselect isnull(m.aid , n.bid) id ,
isnull(m.cnt,0) [A表],
isnull(n.cnt,0) [B表]
from
(select aid , count(1) cnt from a group by aid ) m
full join
(select right(bid,3) bid, count(1) cnt from b group by right(bid,3)) n
on m.aid = n.bid
order by iddrop table a , b/*
id A表 B表
---------- ----------- -----------
101 3 1
102 1 0
103 1 0
104 0 2
105 0 1
106 2 1(所影响的行数为 6 行)*/
a.aid,a.num,b.num
from
(select AID,count(1) as num from a group by aid)a
join
(select BID,count(1) as num from a group by bid)a
on
a.aid=right(b.bid,3)
好牛呀!
例子运行的效果的确就是我需要的。
我慢慢分析学习一下。
因为实际查询时,包括的字段多一点,条件也多一点。
谢谢