22,210
社区成员
发帖
与我相关
我的任务
分享
create table A([考试编号] int,[考试名称] varchar(12))
insert A
select 1,'星期一的考试' union all
select 2,'星期二的考试'
create table b([日志编号] int,[考试编号] int,[日志类型] varchar(4))
insert b
select 1,1,'查看' union all
select 2,1,'查看' union all
select 3,1,'申请' union all
select 4,2,'查看' union all
select 5,2,'申请' union all
select 6,2,'申请'
select a.考试编号,
a.考试名称,
sum(case b.日志类型 when '查看' then 1 else 0 end) [查看人数],
sum(case b.日志类型 when '申请' then 1 else 0 end) [申请人数]
from a , b
where a.考试编号 = b.考试编号
group by a.考试编号, a.考试名称
order by a.考试编号, a.考试名称
drop table a , b
/*
考试编号 考试名称 查看人数 申请人数
----------- ------------ ----------- -----------
1 星期一的考试 2 1
2 星期二的考试 1 2
(所影响的行数为 2 行)
*/
select a.考试编号,
a.考试名称,
sum(case b.日志类型 when '查看' else 0 end) [查看人数],
sum(case b.日志类型 when '申请' else 0 end) [申请人数]
from a , b
where a.考试编号 = b.考试编号
group by a.考试编号, a.考试名称
-->*******************************************************
-->Microsoft SQL Server Management Studio Complete 2008***
-->AUTHOR : Mr wang **********
-->CREATE TIME : 2010-11-22 10:14:56 **************
-->*******************************************************
--> 测试数据:考试表
if object_id('考试表') is not null
drop table 考试表
GO
---->建表
create table 考试表([考试编号] int,[考试名称] varchar(12))
insert 考试表
select 1,'星期一的考试' union all
select 2,'星期二的考试'
--> 测试数据:考试日志表
if object_id('考试日志表') is not null
drop table 考试日志表
GO
---->建表
create table 考试日志表([日志编号] int,[考试编号] int,[日志类型] varchar(4))
insert 考试日志表
select 1,1,'查看' union all
select 2,1,'查看' union all
select 3,1,'申请' union all
select 4,2,'查看' union all
select 5,2,'申请' union all
select 6,2,'申请'
GO
--> 查询结果
SELECT * FROM 考试表
--> 删除表格
--DROP TABLE 考试表
--GO
--> 查询结果
SELECT * FROM 考试日志表
--> 删除表格
--DROP TABLE 考试日志表
SELECT A.[考试编号],B.[考试名称],
SUM(CASE WHEN [日志类型] ='查看' THEN 1 ELSE 0 END) AS '查看人数',
SUM(CASE WHEN [日志类型] ='申请' THEN 1 ELSE 0 END)AS '申请人数'
FROM 考试日志表 A JOIN 考试表 B
ON A.考试编号=B.考试编号
GROUP BY A.[考试编号],B.[考试名称]
你的结果不对吧?