Cinema_ID を PK とし、すべての座席をデータ型ビット (1 = 予約済み、0 = 利用可能) の列として持つテーブル「Cinema」があります。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 に答える