У меня есть две таблицы со следующей схемой:
A)
--------------
Employee
--------------
EmpID EmpName
1 Abc
B)
Address
-----------------------------------
AddressId EmpID Address1 Status
-----------------------------------
1 1 Abc 1 Active
2 1 Abc 2 Inactive
Я хочу отобразить данные сотрудника, такие как EmpName, на основе Address1в следующем сценарии:
- a) Если у сотрудника есть активный и неактивный адрес, запрос отобразит активный адрес.
- b) Если у сотрудника есть только неактивный адрес, запросотобразит неактивный адрес.
- c) Если у Сотрудника есть несколько активных или неактивных адресов, запрос отобразит первый адрес в базе данных, отдавая приоритет активному адресу.
Ниже мойЗапрос SQL
SELECT a.EmpID, a.status, Count(a.Status) as Count,
CASE
WHEN Count(a.Status) = 1 and a.Status In ('Active', 'Inactive')
THEN (select top 1 a.Address1 from Address a where a.Status = 'Active')
WHEN a.Status= 'Inactive' and count(a.Status) = 1
THEN (select top 1 a.Address1 from Address a where a.Status = 'Inactive')
WHEN Count(a.Status) > 1 and a.Status In ('Active', 'Inactive')
THEN (select top 1 a.Address1 from Address a where a.Status = 'Active')
END AS Address1
from Address a where Attendee_Id= 1 group by a.Status, Address1, a.EmpId