SQL:验证每个用户至少有1条记录被标记为主记录

时间:2018-07-13 20:08:03

标签: sql sql-server validation

我有一个带有这些列的表EmployeeInformation

  EmployeeInformationID
  Essentia_ID
  ADP_ID
  SSN
  FirstName
  LastName
  SupervisorOrVP
  LocationNum
  Primary
  EmployeeActive
  RecordActive
  CreatedBy
  CreateDate
  ModifiedBy
  ModifiedDate

每个员工只能有一个EmployeeInformationID,但可以有多个ADP_ID(我继承了这个数据库)。

因此ADP_ID是唯一的,而EmployeeInformationID不是唯一的。但是,应将1条记录标记为主记录。

我需要验证每个员工记录是否至少有一个记录被标记为主要记录。在进行一些计算并在其他表中创建其他记录之前,这将在一个经常使用的程序中完成。

执行此操作的好方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以通过查询执行此操作。以下是例外情况:

select EmployeeInformationID
from EmployeeInformation
group by EmployeeInformationID
having max(Primary) = 0;

假设Primary是一个数值,取值为0和1。如果该字段具有不同的值,则可以使用类似的逻辑。

如果您要恰好一个这样的记录,则:

select EmployeeInformationID
from EmployeeInformation
group by EmployeeInformationID
having sum(Primary) = 1;

或者:

having sum(case when Primary = 1 then 1 else 0 end) = 1