Count the Null columns in a row in SQL

后端 未结 13 776
小蘑菇
小蘑菇 2020-11-30 04:36

I was wondering about the possibility to count the null columns of row in SQL, I have a table Customer that has nullable values, simply I want a query that return an int of

13条回答
  •  猫巷女王i
    2020-11-30 05:30

    Depending on what you want to do, and if you ignore mavens, and if you use SQL Server 2012, you could to it another way. .

    The total number of candidate columns ("slots") must be known. 1. Select all the known "slots" column by column (they're known). 2. Unpivot that result to get a table with one row per original column. This works because the null columns don't unpivot, and you know all the column names. 3. Count(*) the result to get the number of non-nulls; subtract from that to get your answer.

    Like this, for 4 "seats" in a car

    select 'empty seats' = 4 - count(*)
    from 
    (
        select carId, seat1,seat2,seat3,seat4 from cars where carId = @carId
    ) carSpec
    unpivot (FieldValue FOR seat in ([seat1],[seat2],[seat3],[seat4])) AS results
    

    This is useful if you may need to do more later than just count the number of non-null columns, as it gives you a way to manipulate the columns as a set too.

提交回复
热议问题