Sql server 使用Case语句检查多个字段并返回第一个匹配的真值

Sql server 使用Case语句检查多个字段并返回第一个匹配的真值,sql-server,tsql,reporting-services,Sql Server,Tsql,Reporting Services,表格上有十个复选框。当表格完成后,我想知道使用SSRS查询的结果。每个复选框都有不同的名称Checkbox1、Checkbox2、Checkbox3…选中时为Yes,取消选中时为NULL。我想计算我收到的带有一个或多个(多个)复选框的个人回复被勾选的数量。如何确定选中多个复选框的时间 sum (case when Checkbox1='Yes' Or Checkbox2='Yes' Or Checkbox3='Yes' Or Checkbox4='Yes' Or Checkbox5='Yes'

表格上有十个复选框。当表格完成后,我想知道使用SSRS查询的结果。每个复选框都有不同的名称Checkbox1、Checkbox2、Checkbox3…选中时为Yes,取消选中时为NULL。我想计算我收到的带有一个或多个(多个)复选框的个人回复被勾选的数量。如何确定选中多个复选框的时间

sum (case when Checkbox1='Yes' Or Checkbox2='Yes' 
Or Checkbox3='Yes' Or Checkbox4='Yes' Or Checkbox5='Yes' 
Or Checkbox6='Yes' Or Checkbox7='Yes' Or Checkbox8='Yes' 
Or Checkbox9='Yes' Or Checkbox10='Yes' then 1 else 0 end) checkboxresult

如果将复选框值转换为1或0的数值,则可以对其求和,以查看总数是否超过一,例如:

SELECT 
  ResponseID
 ,CASE 
    WHEN SUM(Checkbox1+Checkbox2+Checkbox3+Checkbox4+Checkbox5
                +Checkbox6+Checkbox7+Checkbox8+Checkbox9+Checkbox10) > 1
        THEN 'Multiple responses'
        ELSE 'Zero or 1 responses'
  END ResponseType
FROM
(
SELECT
   ResponseID
  ,CASE Checkbox1 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox1
  ,CASE Checkbox2 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox2
  ,CASE Checkbox3 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox3
  ,CASE Checkbox4 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox4
  ,CASE Checkbox5 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox5
  ,CASE Checkbox6 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox6
  ,CASE Checkbox7 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox7
  ,CASE Checkbox8 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox8
  ,CASE Checkbox9 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox9
  ,CASE Checkbox10 WHEN 'Yes' THEN 1 ELSE 0 END AS Checkbox10
FROM
  <SomeTable>
) Responses
选择
响应ID
案例
求和时(复选框1+复选框2+复选框3+复选框4+复选框5
+复选框6+复选框7+复选框8+复选框9+复选框10)>1
然后是“多重反应”
否则“零或1个响应”
末端响应类型
从…起
(
挑选
响应ID
,CASE Checkbox1如果为“是”,则1其他0结束为Checkbox1
,如果为“是”,则以复选框2结尾,如果为1,则以复选框2结尾
,CASE Checkbox3如果为“是”,则1其他0结束为Checkbox3
,如果为“是”,则以复选框4结尾,如果为1,则以复选框4结尾
,如果为“是”,则以复选框5结尾,如果为1,则以复选框5结尾
,如果为“是”,则以复选框6结尾,如果为1,则以复选框6结尾
,CASE Checkbox7如果为“是”,则1其他0结束为Checkbox7
,CASE Checkbox8如果为“是”,则1其他0结束为Checkbox8
,如果为“是”,则以复选框9结尾,如果为1,则以复选框9结尾
,CASE Checkbox10如果为“是”,则1其他0结束为Checkbox10
从…起
)回应