あなたは次のことができます
declare @Data xml =
(
select *
from jSettings
where linkToJData = '56211010105'
for xml path('row')
)
select count(*)
from @Data.nodes('/row/*[local-name(.) != "linkToJData"]') as T(C);
xml を使用したくない場合は、次のクエリを使用できます。
select count(*)
from jSettings as j
outer apply (values
(j.tblName1),
(j.tblName2),
(j.tblName3),
(j.tblName4),
(j.tblName5)
) as C(name)
where j.linkToJData = '56211010105' and c.name is not null;
多くの列があり、手動で指定したくない場合:
declare @stmt nvarchar(max)
select @stmt =
isnull(@stmt + ', ', '') + '(j.' + c.name + ')'
from sys.syscolumns as c
where id = object_id('dbo.jSettings') and c.name <> 'linkToJData'
select @stmt = '
select count(*)
from jSettings as j
outer apply (values ' + @stmt + ') as C(name)
where j.linkToJData = @linkToJData and c.name is not null'
exec sp_executesql
@stmt = @stmt,
@params = N'@linkToJData nvarchar(128)',
@linkToJData = '56211010105'
sql fiddle demo
1番目または3番目のものをお勧めします-新しい列のクエリを変更する必要はありません