我试图从表中选择并根据列的值返回行。下面是数据和所需的输出。如果列EmpRecord有多个值不返回null,如果它只有null,则应该返回它。
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
关于如何继续进行的建议会很棒吗?
此致 SID
答案 0 :(得分: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(*)