Managment Studio查询

时间:2019-06-20 11:04:49

标签: sql sql-server-2012

不确定要赋予什么标题。我目前正在使用SQL Server Management Studio 2012中的下表编写查询。

如果雇员具有资格'BDE',则该雇员取代了资格'RVT',并且'RVT'不需要在EmpID 1的我的输出中显示。它确实需要为EMP2显示,因为他们没有资格' BDE'

我已经尝试了使用Union和行分区的各种方式,我敢肯定这不是一个特别困难的请求,但是我的想法已经用完

EmpID  Department  ObtainedDate  ExpiryDate   Qualification  DaystoExpire
 1        HR        2019-06-12   2024-06-12        BDE            1819     
 1        HR        2017-06-09   2021-09-18        FGA             821
 1        HR        2019-06-18   2021-09-18        RVT             821
 1        HR        2019-01-28   2020-01-28        HIJ             222
 1        HR        2019-06-03   2019-07-03        TTT              13
 2       payroll    2018-10-18   2019-10-18        RVT             120

我想要的

EmpID  Department  ObtainedDate  ExpiryDate   Qualification  DaystoExpire
 1        HR        2019-06-12   2024-06-12        BDE            1819     
 1        HR        2017-06-09   2021-09-18        FGA             821
 1        HR        2019-01-28   2020-01-28        HIJ             222
 1        HR        2019-06-03   2019-07-03        TTT              13
 2       payroll    2018-10-18   2019-10-18        RVT             120

1 个答案:

答案 0 :(得分:1)

我认为这就是您想要的,我并没有像您在示例中提到的那样列出所有列。

根据您给定的数据,这应该有效:

    Declare @t table (EMPID int ,Department varchar(50),obtaineddate varchar(50),ExpiryDate varchar(50),Qualification varchar(50),DaystoExpire INT)

insert into @t values (1,'HR','2019-06-12','2024-06-12','BDE',1819),
(1,'HR','2017-06-09','2021-09-18','FGA',821),
(1,'HR','2019-06-18','2021-09-18','RVT',821),
(1,'HR','2019-01-28','2020-01-28','HIJ',222),
(1,'HR','2019-06-03','2019-07-03','TTT',13),
(2,'Payroll','2018-10-18','2019-10-18','RVT',120)

select * from @t a 
where not exists ( select * from @t  where a.EMPID=EMPID and a.Qualification='RVT')

UNION 

select * from @t a 
where  exists ( select * from @t  where a.EMPID=EMPID and Qualification='RVT')
and not exists (select * from @t  where a.EMPID=EMPID and Qualification='BDE')
order by EMPID,Qualification