• ベストアンサー

【SQL】1つのレコード内にある複数のデータの集計

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

・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の場合もある。

mtkame
質問者

お礼

早速の回答をありがとうございます。 > SELECT CASE WHEN data1 THEN 1 ELSE 0 END+CASE WHEN data2 THEN 1 ELSE 0 END+... AS 個数 FROM TABLE これをデータの個数だけ並べる必要があるということですね。 カラム数が多い場合は大変ですね...^^;

その他の回答 (1)

回答No.2

こんにちは。 以下のようにすれば取得できます。 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'

mtkame
質問者

お礼

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

関連するQ&A