获取一行中具有特定值的列数

时间:2013-09-11 10:44:20

标签: sql-server count multiple-columns

我有一个表“Cinema”,其中Cinema_ID为我的PK,所有座位为数据类型位的列(1 =已预订,0 =可用),例如。 Cinema_ID,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,......,E5。是否可以仅计算行值为1的列?

2 个答案:

答案 0 :(得分:0)

select 
 cinema_id,
 sum(case when A1=1 then 1 when A2=1 then 1 ... end) as counts from Cinema 
 group by cinema_id

答案 1 :(得分:0)

除了@GriGrim关于设计的说法,您可以将位值转换为数字,然后添加结果:

SELECT ID, CONVERT(int, Bit1) + CONVERT(int, Bit2) + CONVERT(int, Bit3) BookedSeats FROM tblTemp

这将有效,因为true的所有位值都表示为1,而false的所有值都是0

当然,由于座椅数量很多,这几乎无法维持,所以如果您可以自由地将设计标准化,那么您应该选择使用此选项。