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