這不是一個很好的標題(歡迎編輯),但這裏有一個總結。我目前的查詢工作正常,但可能比我目前使用的更容易。我有一個表'答案'列'QuestionIDFK,答案,QuestionnaireIDFK'。該表中的數據是一樣的東西獲取缺少答案的問卷清單
QuestionIDFK Answer QuestionnaireIDFK
1 N 1
2 N 1
3 N 1
1 Y 2
2 Y 2
3 Y 2
1 N 3
3 N 3
1 Y 4
3 Y 4
這意味着用戶給了一個答案的問題2問卷1和2,但對於問題2問卷3和4。未提供答案,我需要的是它不具備的問題2回答那麼預期輸出問卷ID列表是
QuestionnaireWithMissingAnswer2
3
4
我用下面這個查詢,它工作正常,但不知道是否有一個更簡單的方法:
SELECT distinct a.QuestionnaireIDFK AS QuestionnaireWithMissingAnswer2
FROM Answer a
inner join (
SELECT t.QuestionnaireIDFK,
STUFF(ISNULL((SELECT ', ' + convert(nvarchar, x.QuestionIDFK)
FROM Answer x
WHERE x.QuestionnaireIDFK = t.QuestionnaireIDFK
GROUP BY x.QuestionIDFK
FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '')
AS QuesList
FROM Answer t
GROUP BY t.QuestionnaireIDFK) z
ON z.QuestionnaireIDFK = a.QuestionnaireIDFK AND z.QuesList NOT LIKE '%2%'
您還沒有提供完整的信息。與QuestionID列表一樣,必須有其他表格。 那麼爲什麼不選擇* from QuestionnaireTable哪裏不存在(select * from Answer)。就像這樣。 – KumarHarsh
@KumarHarsh有問題ID的問題表,但不同的問卷有不同的問題。一份問卷有10個問題,另一份問卷有25個問題,你的建議是有道理的,但我可以使用的只是問卷和提供的答案。 – artm