0

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

4

2 回答 2

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
于 2013-09-11T10:50:05.680 回答
0

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

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

这将起作用,因为 的所有位值true都表示为1, 的所有值false都是0

当然,如果有大量座位,这几乎是不可维护的,所以如果你可以自由地对设计进行标准化,你绝对应该选择这个选项。

于 2013-09-11T10:59:16.170 回答