Вероятно, самый простой способ сделать это - суммировать все пустые столбцы с помощью операторов case ...when
, а затем сравнить их с общим числом столбцов:
CREATE TABLE [Foo] (
[Col1] int NULL,
[Col2] int NULL,
[Col3] int NULL,
[ColumnDensity] AS CASE
CASE WHEN [Col1] IS NULL THEN 0 ELSE 1 END +
CASE WHEN [Col2] IS NULL THEN 0 ELSE 1 END +
CASE WHEN [Col3] IS NULL THEN 0 ELSE 1 END
WHEN 0 /* No columns are NOT NULL */ THEN 0
WHEN 3 /* All 3 columns are NOT NULL */ THEN 2
ELSE /* Some columns are NULL and some are NOT NULL*/ 1 END
)