Так как никто не предлагает это, и вопрос требует concise
..
Для тех же типов данных лучше использовать прямой COALESCE
coalesce(a,b,c,d) is not null
Если вы будете иметь дело с разными типами данных, попробуйте модифицированную COALESCE
coalesce(LEFT(a,1),LEFT(b,1),LEFT(c,1)) is not null
Пример:
create table abc (a int, b datetime, c varchar(max), d image)
insert into abc select 1, GETDATE(), '', null
insert into abc select 1, null, '', null
insert into abc select 1, null, '', 0x123123
insert into abc select null, null, '', 0x123123
insert into abc select null, GETDATE(), '', 0x123123
insert into abc select null, null, null, null
insert into abc select 88, GETDATE()+3, null, null
insert into abc select 88, GETDATE()+3, 'gdasdf', null
insert into abc select null, null, '222', 0x123123
insert into abc select null, null, 'abcdef', 0x123123
select *, case when coalesce(LEFT(a,1),LEFT(b,1),LEFT(c,1)) is not null then 'N' else 'Y' end
from abc
Если вы не используете экзотические типы, такие как VARCHAR (MAX) или IMAGE, вы можете использовать SQL_VARIANT с COALESCE
create table abc (a int, b datetime, c varchar(10), d image)
insert into abc select 1, GETDATE(), '', null
insert into abc select 1, null, '', null
insert into abc select 1, null, '', 0x123123
insert into abc select null, null, '', 0x123123
insert into abc select null, GETDATE(), '', 0x123123
insert into abc select null, null, null, null
insert into abc select 88, GETDATE()+3, null, null
insert into abc select 88, GETDATE()+3, 'gdasdf', null
insert into abc select null, null, '222', 0x123123
insert into abc select null, null, 'abcdef', 0x123123
select *, case when coalesce(convert(sql_variant,a),b,c) is not null then 'N' else 'Y' end
from abc