2016-09-08 4 views
1

Я пытаюсь получить выбор из таблицы и строки возврата на основе значений столбца. Ниже приведены данные и желаемый результат. Если столбец EmpRecord имеет несколько значений, не имеющих значения null, которые должны быть возвращены, если он имеет только null, он должен быть возвращен.Как получить ниже выход SQL

Data Table 

EmployeeNo     EmpRecord 
1       A 
1       NULL 
2       a 
3       NULL 
4       NULL 
4       A 
4       aa 




Output 
EmployeeNo     EmpRecord 
1       A 
2       a 
3       NULL 
4       A 
4       aa 

Любые советы о том, как это сделать, было бы здорово?

Привет, Сид

+0

Возможно, вы захотите использовать коррелированный подзапрос с помощью 'EXISTS'. –

ответ

1

Первая половина UNION запроса ниже просто удаляет записи, для которых EmpRecord быть NULL. Это почти получает работу, за исключением того, что для сотрудников, у которых есть только , еще NULL записей, это также удалит их из результирующего набора. Таким образом, вторая часть UNION добавляет этих сотрудников назад как единую запись со своим номером сотрудника и NULL заполнителем для записи.

SELECT t1.EmployeeNo, 
     t1.EmpRecord 
FROM yourTable t1 
WHERE t1.EmpRecord IS NOT NULL 
UNION ALL 
SELECT t2.EmployeeNo, 
     NULL AS EmpRecord 
FROM yourTable t2. 
GROUP BY t2.EmployeeNo 
HAVING SUM(CASE WHEN t2.EmpRecord IS NULL THEN 1 ELSE 0 END) = COUNT(*) 
+0

Спасибо, хорошо работает – Sid

+0

@Sid Повторите попытку. –

Смежные вопросы