- ベストアンサー
【SQL】1つのレコード内にある複数のデータの集計
1つのテーブルの1つのレコード内に、以下のような複数のBooleanデータがあって、trueがいくつあるかを数えたいのですが、1つのSQLで記述できるでしょうか? ID data1 data2 data3 data4 ... 1 true false true false ...
- みんなの回答 (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の場合もある。
その他の回答 (1)
- NoMusicNoLife49
- ベストアンサー率63% (14/22)
こんにちは。 以下のようにすれば取得できます。 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'
お礼
なるほど、やはり全部のカラムを列挙していくしかないようですね。当然ですが… ありがとうございました。
お礼
早速の回答をありがとうございます。 > SELECT CASE WHEN data1 THEN 1 ELSE 0 END+CASE WHEN data2 THEN 1 ELSE 0 END+... AS 個数 FROM TABLE これをデータの個数だけ並べる必要があるということですね。 カラム数が多い場合は大変ですね...^^;