日期:2014-05-17  浏览次数:20415 次

请教一个SQL句子
各位大侠好!

请教各位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


谢谢各位了!

------解决方案--------------------
select tb1.姓名,count(书籍单号),sum(书籍数量)
from tb1 join tb2 on tb1.姓名=tb2.姓名
group by 姓名
------解决方案--------------------
select 姓名,count(*),sum(书籍数量)
from tb
group by 姓名, 书籍单号
------解决方案--------------------
探讨

引用:

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


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

------解决方案--------------------
SQL code
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 行受影响)
 
 
 */