0
問題:MainID、JobID、EmployeeIDのテーブルがあります(悪い名前を選択しましたが、現在は変更できません)。SQLサーバー - 優先順位の設定
MainID | EmployeeID | JobID
100 | 100 | 100
100 | 100 | 101
NULL | 100 | 102
は今、私はメインの契約(1)を持っているもののレコードを示して余分な列を追加したいとこれは(2)
例があるしていない記録されます。
- IF MainID == JobID - > Main contract
- IF MainID <> JobID AND MainID IS NULL - >メインコントラクトではありません。
- IF MainID IS NULL - >メインコントラクト最初の2つの症例の後にはまだtは見出されない。
私が試した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
これは最初の2例に適していますが、MainIDがnullの場合、それは(メインない契約を意味する)2上のすべてのレコードを設定します。
提案やその他のアイデアはありますか?
私が意味する、後者の場合は、ちょうど 'MainIDは右、NULL'ですか? – Lamak
正しい。それはちょうどその方法で文書化されました:) – DenStudent
'CASE'は書かれているのと同じ順序で評価されるので、あまり具体的でない前にもっと具体的な条件を' nullとnot exist'にしたいかもしれません。 – Gasper