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以前曾经看过有类似的问题,但实在找不回来了,所以只能再问一次。
谢谢

解决方案 »

  1.   

    select a.aid , 
           count(1) [a表],
           (select count(1) from b where right(bid,3) = a.aid) [b表]
    from a
    group by aid
      

  2.   

    不明白为什么要用Count(1)?
    能不能简单说明一下?
    T-SQL里的说明,只是说这是记数函数
    我们原来用的也是这样
      

  3.   

    create table A(AID varchar(10))
    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 行)*/
      

  4.   

    select 
      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)
      
      

  5.   

    count(1) , count(*) , count(某col)count(1) 写起来方便些.
      

  6.   

    Yeah~~~~~!
    好牛呀!
    例子运行的效果的确就是我需要的。
    我慢慢分析学习一下。
    因为实际查询时,包括的字段多一点,条件也多一点。
    谢谢