重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

1つのテーブルの1つのレコード内に、以下のような複数のBooleanデータがあって、trueがいくつあるかを数えたいのですが、1つのSQLで記述できるでしょうか?

ID data1 data2 data3 data4 ...
1  true  false  true  false ...

A 回答 (2件)

・Accessの場合


SELECT IIF(data1,1,0)+IIF(data2,1,0)+IIF(data3,1,0)+IIF(data4,1,0) AS 個数 FROM TABLE

・SQL Serverの場合
SELECT CASE WHEN data1 THEN 1 ELSE 0 END+CASE WHEN data2 THEN 1 ELSE 0 END+... AS 個数 FROM TABLE

もしかしたら、単純に
SELECT data1+data2+data3+data4 AS 個数 FROM TABLE
でもOKの場合もある。
    • good
    • 0
この回答へのお礼

早速の回答をありがとうございます。

> SELECT CASE WHEN data1 THEN 1 ELSE 0 END+CASE WHEN data2 THEN 1 ELSE 0 END+... AS 個数 FROM TABLE

これをデータの個数だけ並べる必要があるということですね。

カラム数が多い場合は大変ですね...^^;

お礼日時:2012/05/15 14:52

こんにちは。



以下のようにすれば取得できます。


SELECT COUNT(data)
FROM(
SELECT ID,data1 AS data FROM テーブル
UNION ALL
SELECT ID,data2 AS data FROM テーブル
UNION ALL
SELECT ID,data3 AS data FROM テーブル
UNION ALL
SELECT ID,data4 AS data FROM テーブル
UNION ALL
SELECT ID,data2 AS data FROM テーブル
) AS TBL
WHERE ID='1'
AND data = 'True'
    • good
    • 0
この回答へのお礼

なるほど、やはり全部のカラムを列挙していくしかないようですね。当然ですが…
ありがとうございました。

お礼日時:2012/05/21 15:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す