レコードごとにCOUNTする方法(SQL)

本来COUNT関数は、カラムごとにしか使えません。

そうではなく、レコードごとの合計を取得する方法をお伝えします。


例としてこのようなテーブルがあったとします。

f:id:bibuyama:20190526184726p:plain

以下のクエリを使ってこのテーブルの行ごとのデータ数を取得したいと思います。

取得したい値は1行目が3、2行目が2です。

SELECT 
    NO_1, 
    NO_2, 
    NO_3, 
    (CASE WHEN NO_1 = '' OR NO_1 IS NOT NULL THEN 1 ELSE 0 END) 
    + (CASE WHEN NO_2 = '' OR NO_2 IS NOT NULL THEN 1 ELSE 0 END) 
    + (CASE WHEN NO_3 = '' OR NO_3 IS NOT NULL THEN 1 ELSE 0 END) 
    AS RECORD_SUM 
FROM 
    BLOG;


結果
f:id:bibuyama:20190526190405p:plain