有2表:
T1:
考核指标集名称 考核项目 最低分数 最高分数
优秀指标系统 学历 2 6
优秀指标系统 工龄 1 30
...
T2:
考核名称 考核指标集名称 考核项目 被考核人 得分
优秀员工 优秀指标系统 学历 AA 5
优秀员工 优秀指标系统 学历 BB 3
优秀员工 优秀指标系统 工龄 AA 12
优秀员工 优秀指标系统 工龄 BB 20
...
查询:
当被考核人=AA:此时AA在T2中是存在的
考核指标集名称 考核项目 最低分数 最高分数 被考核人 得分
优秀指标系统 学历 2 6 AA 5
优秀指标系统 工龄 1 30 AA 12
当被考核人=DD:此时DD在T2中不存在
考核指标集名称 考核项目 最低分数 最高分数 被考核人 得分
优秀指标系统 学历 2 6 DD
优秀指标系统 工龄 1 30 DD
T1:
考核指标集名称 考核项目 最低分数 最高分数
优秀指标系统 学历 2 6
优秀指标系统 工龄 1 30
...
T2:
考核名称 考核指标集名称 考核项目 被考核人 得分
优秀员工 优秀指标系统 学历 AA 5
优秀员工 优秀指标系统 学历 BB 3
优秀员工 优秀指标系统 工龄 AA 12
优秀员工 优秀指标系统 工龄 BB 20
...
查询:
当被考核人=AA:此时AA在T2中是存在的
考核指标集名称 考核项目 最低分数 最高分数 被考核人 得分
优秀指标系统 学历 2 6 AA 5
优秀指标系统 工龄 1 30 AA 12
当被考核人=DD:此时DD在T2中不存在
考核指标集名称 考核项目 最低分数 最高分数 被考核人 得分
优秀指标系统 学历 2 6 DD
优秀指标系统 工龄 1 30 DD
解决方案 »
- css中“<!-”和“-->”分别表示什么意思?我是新手,刚开始学的,请大家多多指教
- 如何查看表所处的文件组
- 求一条查询的SQL 语句!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- windows home版安装什么SQL数据库?
- 数十万条记录要插入数据库!
- 大家帮我看看这个存储过程怎么出错呢~
- SQL中有类似分支选择语句“select case"功能的语句吗?
- 为什么没有办法截断事务日志呢?
- 关于SQL存储过程中事务的编写
- 怎么看imp产生的警告消息??????????????
- 一个简单的特殊排序问题。
- 急!!!能够封杀和解封注册用户的SQL 语句?
declare @T1 table (考核指标集名称 varchar(12),考核项目 varchar(4),最低分数 int,最高分数 int)
insert into @T1
select '优秀指标系统','学历',2,6 union all
select '优秀指标系统','工龄',1,30
--> 测试数据: @T2
declare @T2 table (考核名称 varchar(8),考核指标集名称 varchar(12),考核项目 varchar(4),被考核人 varchar(2),得分 int)
insert into @T2
select '优秀员工','优秀指标系统','学历','AA',5 union all
select '优秀员工','优秀指标系统','学历','BB',3 union all
select '优秀员工','优秀指标系统','工龄','AA',12 union all
select '优秀员工','优秀指标系统','工龄','BB',20declare @被考核人 varchar(10)
set @被考核人='DD'
select b.考核指标集名称,b.考核项目,最低分数,b.最高分数,被考核人=@被考核人,a.得分 from @T2 a right join @t1 b on a.考核项目=b.考核项目
and 被考核人=@被考核人
from t1 left join t2
on t1.考核项目 = t2.考核项目
where t2.被考核人 = 'AA'
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
if object_id('P') is not null
drop procedure P
go
create procedure P
( @考核人 varchar(10))
as
set nocount on
declare @T1 table (考核指标集名称 varchar(20),考核项目 varchar(10),最低分数 int,最高分数 int)
insert into @T1 select '优秀指标系统','学历',2,6
union all select '优秀指标系统','工龄',1,30
declare @T2 table (考核名称 varchar(10),优秀指标系统 varchar(20),考核项目 varchar(10),被考核人 varchar(10),得分 int)
insert into @t2 select '优秀员工','优秀指标系统','学历','AA',5
union all select '优秀员工','优秀指标系统','学历','BB',3
union all select '优秀员工','优秀指标系统','工龄','AA',12
union all select '优秀员工','优秀指标系统','工龄','BB',20
if exists(select * from @t2 where 被考核人=@考核人)
select 考核指标集名称,a.考核项目,最低分数,最高分数,被考核人,得分
from @t1 a join @t2 b on a.考核项目=b.考核项目 where 被考核人=@考核人
else
select * from @t1
set nocount off
exec p 'dd'
create procedure P
( @考核人 varchar(10))
as
set nocount on
declare @T1 table (考核指标集名称 varchar(20),考核项目 varchar(10),最低分数 int,最高分数 int)
insert into @T1 select '优秀指标系统','学历',2,6
union all select '优秀指标系统','工龄',1,30
declare @T2 table (考核名称 varchar(10),优秀指标系统 varchar(20),考核项目 varchar(10),被考核人 varchar(10),得分 int)
insert into @t2 select '优秀员工','优秀指标系统','学历','AA',5
union all select '优秀员工','优秀指标系统','学历','BB',3
union all select '优秀员工','优秀指标系统','工龄','AA',12
union all select '优秀员工','优秀指标系统','工龄','BB',20
if exists(select * from @t2 where 被考核人=@考核人)
select 考核指标集名称,a.考核项目,最低分数,最高分数,被考核人,得分
from @t1 a join @t2 b on a.考核项目=b.考核项目 where 被考核人=@考核人
else
select * from @t1
set nocount off
go
exec p 'dd'
INSERT INTO #A SELECT 'S1','GONGLING',1,30CREATE TABLE #B (T_NAE VARCHAR(20),S_NAME VARCHAR(20),C_NAME VARCHAR(20),ATTN_NAME VARCHAR(20),S_NUM FLOAT)
INSERT INTO #B SELECT 'T1','S1','XUELI','AA',5
INSERT INTO #B SELECT 'T1','S1','XUELI','BB',3
INSERT INTO #B SELECT 'T1','S1','GONGLING','AA',12
INSERT INTO #B SELECT 'T1','S1','GONGLING','BB',20DECLARE @ATTN_NAME VARCHAR(20)
SET @ATTN_NAME='AA'SELECT A.*,@ATTN_NAME ATTN_NAE,B.S_NUM FROM #A A
LEFT JOIN
(SELECT * FROM #B WHERE ATTN_NAME=@ATTN_NAME)B ON (A.S_NAME=B.S_NAME AND A.C_NAME=B.C_NAME)
SET @ATTN_NAME='DD'SELECT A.*,@ATTN_NAME ATTN_NAE,B.S_NUM FROM #A A
LEFT JOIN
(SELECT * FROM #B WHERE ATTN_NAME=@ATTN_NAME)B ON (A.S_NAME=B.S_NAME AND A.C_NAME=B.C_NAME)DROP TABLE #A
DROP TABLE #B/**
S1 XUELI 2.0 6.0 AA 5.0
S1 GONGLING 1.0 30.0 AA 12.0
/***
S1 XUELI 2.0 6.0 DD NULL
S1 GONGLING 1.0 30.0 DD NULL