DECLARE @ta TABLE([d_id] int, [department] varchar(10))
INSERT INTO @ta
    SELECT  1, '信息系' 
    UNION ALL SELECT 2, '工管信'
    UNION ALL SELECT 3, '中文系'
DECLARE @tb TABLE([id] int, [title] varchar(10), [d_id] int)
INSERT INTO @tb
    SELECT  1, 'qqqq', 3
    UNION ALL SELECT 2, 'wwww', 2
    UNION ALL SELECT 3, 'qqqq', 1
    UNION ALL SELECT 4, 'wwww', 2SELECT A.d_id, A.department, SUM(CASE WHEN B.title IS NULL THEN 0 ELSE 1 END) AS CT
FROM @ta A
LEFT JOIN @tb B ON A.d_id = B.d_id
GROUP BY A.d_id, A.department
ORDER BY A.d_id
d_id        department CT          
----------- ---------- ----------- 
1           信息系        1
2           工管信        2
3           中文系        1

解决方案 »

  1.   

    create table table1(d_id int,department varchar(10))
    insert into table1
    select 1,'信息系'
    union all select 2,'工管信'
    union all select 3,'中文系'create table table2(id int,title varchar(10),d_id int)
    insert into table2
    select 1,'qqqq',3
    union all select 2,'wwww',2
    union all select 3,'qqqq',1
    union all select 4,'wwww',2select table1.d_id,table1.department,t.total from table1
    inner join (select d_id,count(*) total from table2 group by d_id)t on table1.d_id=t.d_id
      

  2.   

    有没有办法d_id 不表中显示出来
      

  3.   

    有没有办法d_id 不在表中显示出来
      

  4.   

    DECLARE @ta TABLE([d_id] int, [department] varchar(10))
    INSERT INTO @ta
        SELECT  1, '信息系' 
        UNION ALL SELECT 2, '工管信'
        UNION ALL SELECT 3, '中文系'
    DECLARE @tb TABLE([id] int, [title] varchar(10), [d_id] int)
    INSERT INTO @tb
        SELECT  1, 'qqqq', 3
        UNION ALL SELECT 2, 'wwww', 2
        UNION ALL SELECT 3, 'qqqq', 1
        UNION ALL SELECT 4, 'wwww', 2select a.department,b.数量 from @ta a ,(
    select d_id , count(*) as 数量 from @tb group by d_id) b
    where a.d_id = b.d_iddepartment 数量          
    ---------- ----------- 
    信息系        1
    工管信        2
    中文系        1(所影响的行数为 3 行)
      

  5.   

    DECLARE @ta TABLE([d_id] int, [department] varchar(10))
    INSERT INTO @ta
        SELECT  1, '信息系' 
        UNION ALL SELECT 2, '工管信'
        UNION ALL SELECT 3, '中文系'
    DECLARE @tb TABLE([id] int, [title] varchar(10), [d_id] int)
    INSERT INTO @tb
        SELECT  1, 'qqqq', 3
        UNION ALL SELECT 2, 'wwww', 2
        UNION ALL SELECT 3, 'qqqq', 1
        UNION ALL SELECT 4, 'wwww', 2SELECT A.d_id, A.department, B.CT
    FROM @ta A
    LEFT JOIN (SELECT d_id, COUNT(1) AS CT FROM @tb GROUP BY d_id)B ON A.d_id = B.d_id
    ORDER BY A.d_id
    COMPUTE SUM(B.CT)
      

  6.   


    DECLARE @ta TABLE([d_id] int, [department] varchar(10))
    INSERT INTO @ta
        SELECT  1, '信息系' 
        UNION ALL SELECT 2, '工管信'
        UNION ALL SELECT 3, '中文系'
    DECLARE @tb TABLE([id] int, [title] varchar(10), [d_id] int)
    INSERT INTO @tb
        SELECT  1, 'qqqq', 3
        UNION ALL SELECT 2, 'wwww', 2
        UNION ALL SELECT 3, 'qqqq', 1
        UNION ALL SELECT 4, 'wwww', 2select isnull(a.department ,'总计') as department,b.数量 from @ta a full join (
    select d_id , count(*) as 数量 from @tb group by d_id with rollup) b
    on cast(a.d_id as char(4)) = b.d_iddepartment 数量          
    ---------- ----------- 
    信息系     1
    工管信     2
    中文系     1
    总计       4(所影响的行数为 4 行)