T1
编号 第一列 第二列 第三列 第四列
1 是 否 是 否
2 否 否 是 否
3 是 是 是 否
4 否 否 是 是
结果
编号 结果一 结果二
1 13 1010
2 3 0010
3 123 1110
4 34 0011
结果一的意思是如果哪列上有值,就记录哪列,举例编号一,第一列和第三列结果是“是”,所以在结果一中显示“13”。
结果二的意思是,综合指定列,做个合集,0代表否,1代表是
编号 第一列 第二列 第三列 第四列
1 是 否 是 否
2 否 否 是 否
3 是 是 是 否
4 否 否 是 是
结果
编号 结果一 结果二
1 13 1010
2 3 0010
3 123 1110
4 34 0011
结果一的意思是如果哪列上有值,就记录哪列,举例编号一,第一列和第三列结果是“是”,所以在结果一中显示“13”。
结果二的意思是,综合指定列,做个合集,0代表否,1代表是
GOif object_id('T1') is not null
drop table T1
Go
Create table T1([编号] smallint,[第一列] nvarchar(1),[第二列] nvarchar(1),[第三列] nvarchar(1),[第四列] nvarchar(1))
Insert into T1
Select 1,N'是',N'否',N'是',N'否'
Union all Select 2,N'否',N'否',N'是',N'否'
Union all Select 3,N'是',N'是',N'是',N'否'
Union all Select 4,N'否',N'否',N'是',N'是'
SELECT
编号
,CASE WHEN [第一列]=N'是' THEN '1' ELSE '' END
+CASE WHEN [第二列]=N'是' THEN '2' ELSE '' END
+CASE WHEN [第三列]=N'是' THEN '3' ELSE '' END
+CASE WHEN [第四列]=N'是' THEN '4' ELSE '' END AS [结果一]
,CASE WHEN [第一列]=N'是' THEN '1' ELSE '0' END
+CASE WHEN [第二列]=N'是' THEN '1' ELSE '0' END
+CASE WHEN [第三列]=N'是' THEN '1' ELSE '0' END
+CASE WHEN [第四列]=N'是' THEN '1' ELSE '0' END AS [结果二]
FROM T1
/*
编号 结果一 结果二
------ ---- ----
1 13 1010
2 3 0010
3 123 1110
4 34 0011
*/