0

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