Managment Studio Query - PullRequest
       12

Managment Studio Query

1 голос
/ 20 июня 2019

Не был уверен, какое название дать.В настоящее время я пишу запрос, используя приведенную ниже таблицу в 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 Ответ

1 голос
/ 20 июня 2019

Я думаю, это то, что вы хотите, я не взял все столбцы, как вы упомянули в своем примере.

Согласно вашим данным, это должно работать:

    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
...