проверить, являются ли поля таблицы sqlserver пустыми / полными в вычисляемом поле - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно добавить вычисляемое поле в таблицу sqlserver, которая показывает мне, являются ли другие поля таблицы пустыми или полными (все, некоторые из них, нет)

поле должно содержать:

0=all the fields are empty(null)
1=almost one field has been filled
2=all fields contains something

Какой самый эффективный способ добиться этого?

1 Ответ

0 голосов
/ 09 мая 2019

Вероятно, самый простой способ сделать это - суммировать все пустые столбцы с помощью операторов 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
)
...