create view dbo.v_test
as
select id,检查时间,检查人,
case 检查结果 when 0 then '不合格'
when 1 then '合格'
else '不明'
end 结果
from tbgo
as
select id,检查时间,检查人,
case 检查结果 when 0 then '不合格'
when 1 then '合格'
else '不明'
end 结果
from tbgo
解决方案 »
- In后面的值是变量是怎样写?
- 请教如何在sql server2005里建存储过程?
- 如何将已存在字段里为空的纪录赋定值?急~~~
- telnet 127.0.0.1 1433 怎么连接失败呢?
- 汇总混合查询-sql语句,请高手帮忙一下呀,比较急!!!!!!!!!!
- 请问哪位兄弟在XP上装过SQLSERVER2000个人版,怎么我装完后企业管理器不能使用,别的倒是都可以
- 一个超级简单问题,可我不会?如何把这个UID的值赋给变量!
- 第一次到这里来提问,关于数据库恢复的问题,谢谢!
- 存储过程怎么调试呢?可以设断点什么的吗?
- 关于数据库发布的问题!急急急!如是好方法可加分!
- 问一个SQL语句,我觉得蛮难的。
- 如何用Sql语句读取数据库前3-6?
a inner join B表 b on a.id=b.id
(
select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0)
union all
select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
) M
where A.id = M.id
insert into A values(1, '2008-3-24', '小王')
insert into A values(2, '2008-3-24', '小王')
insert into A values(3, '2008-3-24', '小王')
insert into A values(4, '2008-3-24', '小王')
insert into A values(5, '2008-3-24', '小王')
insert into A values(6, '2008-3-24', '小王')
create table B(ID int, 检查项目 int, 检查结果 int)
insert into B values(1, 10, 0 )
insert into B values(1, 11, 1 )
insert into B values(1, 12, 0 )
insert into B values(2, 10, 1 )
insert into B values(2, 11, 1 )
insert into B values(2, 12, 1 )
go--查询及结果
select A.* , isnull(M.检查情况,'未参检') 检查情况 from A left join
(
select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID from B where 检查结果 = 0)
union all
select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
) M
on A.id = M.id
/*
ID 检查时间 检查人 检查情况
----------- ------------------------------------------------------ ---------- ------
1 2008-03-24 00:00:00.000 小王 不合格
2 2008-03-24 00:00:00.000 小王 合格
3 2008-03-24 00:00:00.000 小王 未参检
4 2008-03-24 00:00:00.000 小王 未参检
5 2008-03-24 00:00:00.000 小王 未参检
6 2008-03-24 00:00:00.000 小王 未参检(所影响的行数为 6 行)
*/
go--创建视图
create view my_view
as
select A.* , isnull(M.检查情况,'未参检') 检查情况 from A left join
(
select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID from B where 检查结果 = 0)
union all
select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
) M
on A.id = M.id
go
--查询视图急及结果
select * from my_view
/*
ID 检查时间 检查人 检查情况
----------- ------------------------------------------------------ ---------- ------
1 2008-03-24 00:00:00.000 小王 不合格
2 2008-03-24 00:00:00.000 小王 合格
3 2008-03-24 00:00:00.000 小王 未参检
4 2008-03-24 00:00:00.000 小王 未参检
5 2008-03-24 00:00:00.000 小王 未参检
6 2008-03-24 00:00:00.000 小王 未参检(所影响的行数为 6 行)
*/drop table A,B
drop view my_view
insert into A values(1, '2008-3-24', '小王')
insert into A values(2, '2008-3-24', '小王')
insert into A values(3, '2008-3-24', '小王')
insert into A values(4, '2008-3-24', '小王')
insert into A values(5, '2008-3-24', '小王')
insert into A values(6, '2008-3-24', '小王')
create table B(ID int, 检查项目 int, 检查结果 int)
insert into B values(1, 10, 0 )
insert into B values(1, 11, 1 )
insert into B values(1, 12, 0 )
insert into B values(2, 10, 1 )
insert into B values(2, 11, 1 )
insert into B values(2, 12, 1 )
go
select a.id,a.检查时间,a.检查人,
case when sum(检查结果)=count(*) then 1 else 0 end from A
a inner join B b on a.id=b.id
group by a.id,a.检查时间,a.检查人