我有下表 CandidateInterview :
| 考生編號 | 面試ID | 地位 |
|---|---|---|
| 100 | 12 | 還沒有 |
| 100 | 13 | 進行中 |
CREATE TABLE CandidateInterview (CandidateID int, InterviewID int,
Status int)
INSERT INTO CandidateInterview VALUES
(100 , 12 , 1),
(100 , 13 , 2),
(120 , 9 , 1)
我只想得到只有 Not Yet 狀態的候選人,而不是其他人
uj5u.com熱心網友回復:
SQL小提琴
MS SQL Server 2017 架構設定:
CREATE TABLE CandidateInterview (CandidateID int, InterviewID int,
Status int)
INSERT INTO CandidateInterview VALUES
(100 , 12 , 1),
(100 , 13 , 2),
(120 , 9 , 1)
查詢 1:
SELECT * FROM CandidateInterview AS A
WHERE NOT EXISTS
(
SELECT * FROM CandidateInterview AS B
WHERE A.CandidateID=B.CandidateID
AND Status >1
)
結果:
| CandidateID | InterviewID | Status |
|-------------|-------------|--------|
| 120 | 9 | 1 |
uj5u.com熱心網友回復:
您可以為此使用視窗函式。
視窗函式通常比相關子查詢更有效
SELECT
CandidateID,
InterviewID,
Status
FROM (
SELECT *,
OtherStatus = COUNT(CASE WHEN Status > 1 THEN 1 END) OVER (PARTITION BY CandidateID)
FROM CandidateInterview ci
) ci
WHERE OtherStatus = 0;
SQL小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374172.html
標籤:sql sql-server 查询语句
