读书人

求一条判判案句

发布时间: 2013-02-03 12:33:31 作者: rapoo

求一条判断语句
T1
编号 第一列 第二列 第三列 第四列
 1  是   否   是   否
 2  否   否   是   否
 3  是   是   是   否
 4  否   否   是   是
结果
编号 结果一 结果二
 1  13   1010
 2  3    0010
 3  123   1110
 4  34   0011
结果一的意思是如果哪列上有值,就记录哪列,举例编号一,第一列和第三列结果是“是”,所以在结果一中显示“13”。
结果二的意思是,综合指定列,做个合集,0代表否,1代表是

[解决办法]

USE test
GO

if 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 '' ENDAS [结果一]
,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' ENDAS [结果二]
FROM T1

/*
编号 结果一 结果二
------ ---- ----
1 13 1010
2 3 0010
3 123 1110
4 34 0011
*/

[解决办法]
没见过这种设计,呵呵,学习了。
傻傻问一下,有了结果2,这个结果一还有什么意义么?

做法:
在表格1结构上临时添加4列,表示是否有值,用0,1表示,那么你的结果2就有了。
结果1可以在结果2的基础上换算。

读书人网 >SQL Server

热点推荐