Учитывая (упрощенно) таблица называется Ответы, какЗапроса на возврат одной строки на человек
Id Person Answer Priority
1 Tom France Low
2 Tom Germany High
3 Fred England Low
4 Amy Italy High
Я хотел бы написать запрос SQL, который возвращает одну строки для каждого человека, указывающих их приоритет ответа. Моя мысль была использовать автообъединение
SELECT *
FROM Answers aLow
LEFT OUTER JOIN Answers aHigh
ON aLow.Person = aHigh.Person
AND aLow.Priority = 'Low'
AND aHigh.Priority = 'High'
, а затем рассматривает в коде, который Первоочередные столбцы являются ненулевыми, но возвращает дополнительную строку для Тома
Id Person Answer Priority Id Person Answer Priority
1 Tom France Low 2 Tom Germany High
2 Tom Germany High NULL NULL NULL NULL
3 Fred England Low NULL NULL NULL NULL
4 Amy Italy High NULL NULL NULL NULL
Используя этот подход, желаемый результат будет
Id Person Answer Priority Id Person Answer Priority
1 Tom France Low 2 Tom Germany High
3 Fred England Low NULL NULL NULL NULL
4 Amy Italy High NULL NULL NULL NULL
Я уверен, что, должно быть, я пропустил что-то простое, но не могу наложить на него свой палец.
Что мне не хватает? Есть ли лучший способ подойти к этой проблеме?
Используйте DISTINCT заявления? – Edper