各位大侠好!请教各位SQL语句!表1:姓名   年龄
a      21
b      22
c      33表2:姓名   书籍单号   书籍数量
a       1212        2
a       334         5
b       335         1
a       2388        9请问:
怎么得到以下内容:姓名   单号数量   书籍数量
a      3          16
b      1          1
c      0          0
谢谢各位了!

解决方案 »

  1.   

    select 姓名,count(*),sum(书籍数量)
    from tb
    group by 姓名
      

  2.   

    select tb1.姓名,count(书籍单号),sum(书籍数量)
    from tb1 join tb2 on tb1.姓名=tb2.姓名
    group by 姓名
      

  3.   

    select 姓名,count(*),sum(书籍数量)
    from tb
    group by 姓名, 书籍单号
      

  4.   


    tb1 的数据没有全部出来,c没有显示?
    能全都出来吗?
      

  5.   

    select tb1.姓名,count(*),sum(书籍数量)
    from tb1 
    left join tb2 on tb1.姓名=tb2.姓名
    group by 姓名
      

  6.   

    CREATE TABLE A(姓名 VARCHAR(10), 年龄 INT )
     INSERT INTO A
     SELECT 'a', 21
     UNION ALL 
     SELECT 'b', 22
     UNION ALL 
     SELECT 'c', 33
     
     CREATE TABLE B(姓名 VARCHAR(10),  书籍单号  VARCHAR(10), 书籍数量 INT )
     INSERT INTO B
     SELECT 'a', '1212', 2
     UNION ALL 
     SELECT 'a', '334', 5
     UNION ALL 
     SELECT 'b', '335', 1
     UNION ALL 
     SELECT 'a', '2388', 9
     
     
     
     
     
     SELECT a.姓名,COUNT(书籍单号)单号数量,ISNULL(SUM(书籍数量),0)书籍数量
     FROM a LEFT JOIN b ON a.姓名=b.姓名
     GROUP BY a.姓名
     
     /*
     姓名         单号数量        书籍数量
     ---------- ----------- -----------
     a          3           16
     b          1           1
     c          0           0
     警告: 聚合或其他 SET 操作消除了 Null 值。
     
     (3 行受影响)
     
     
     */
      

  7.   

    五体投地了,谢谢大家!DBA_Huangzj 的 可用!