SQL SERVER - 优先处理案例

时间:2016-10-07 15:30:30

标签: sql sql-server

问题:我有一个包含MainID,JobID和EmployeeID的表(选择错误的名称,但现在不能改变)。

MainID | EmployeeID | JobID
100    | 100        | 100
100    | 100        | 101
NULL   | 100        | 102

现在,我想添加一个额外的列,显示哪个记录有主合同(1),哪些记录没有(2)

案例是:

  • IF MainID == JobID - >主合同
  • IF MainID<> JobID和MainID IS NULL - >不是主合同
  • 如果MainID为空 - >主合同,只有在前两个案件之后仍未找到主合同。

我试过的SQL语句是:

SELECT MainID , EmployeeID, JobID,
CASE
WHEN JobID = MainID  THEN 1
WHEN JobID != MainID  THEN 2
WHEN MainID  IS NULL AND not exists(SELECT JobID,MainID 
            FROM TableA
            WHERE JobID = MainID 
            ) THEN 1
ELSE 2

END AS MainContract
FROM     TableA
ORDER BY SnapshotDate, EmployeeID

这适用于前两种情况,但如果MainID为空,它会将所有记录设置为2(意味着不是主合同)。

有任何建议或其他想法吗?

1 个答案:

答案 0 :(得分:0)

快速洗牌:

this.props.test.clicked