Tsql 如何获得低于SQL的输出

Tsql 如何获得低于SQL的输出,tsql,Tsql,我试图从表中获取select并基于列的值返回行。下面是数据和期望的输出。若列EmpRecord有多个非null值要返回,若它只有null值,那个么应该返回它 Data Table EmployeeNo EmpRecord 1 A 1 NULL 2 a 3

我试图从表中获取select并基于列的值返回行。下面是数据和期望的输出。若列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

下面的
UNION
查询的前半部分只是去除
EmpRecord
be
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(*)

您可能希望使用与
EXISTS
@Sid相关的子查询。请重试该查询。