子查询返回的值超过1

Int*_*eer 2 sql t-sql

我需要选择具有1种状态的个人联系人.

问题是单个联系人可以基于4个不同的列具有多个同时的状态.

活动状态取代非活动状态.如果联系人同时处于活动和非活动状态,则应默认为活动状态.

到目前为止,我的子查询独立工作,但当单个联系人在不同列中具有2个或更多同时状态时,它们返回的值超过1.

关于如何以1状态返回单个联系人的任何想法?

SELECT Contact,
   ((SELECT 'Active'
     FROM   MyTable
     WHERE  Column1 = 1
             OR Column2 = 1)
    UNION
    (SELECT 'Inactive'
     FROM   MyTable
     WHERE  Column3 = 1
             OR Column4 = 1)) AS MyStatus
FROM   MyTable 
Run Code Online (Sandbox Code Playgroud)

Li0*_*liQ 6

您是否考虑过使用CASE

SELECT
    Contact,
    MyStatus = CASE 
        WHEN Column1 = 1 OR Column2 = 1 THEN 'Active'
        WHEN Column3 = 1 OR Column4 = 1 THEN 'Inactive'
    END
FROM
    MyTable 
Run Code Online (Sandbox Code Playgroud)