declare @T table
(
ID int,
Name varchar(10),
Age int,
City varchar(10),
Zip varchar(10)
)
insert into @T values
(1, 'Alex', 32, 'Miami', NULL),
(2, NULL, 24, NULL, NULL)
;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
(
select *
from @T as T2
where T1.ID = T2.ID
for xml path('row'), elements xsinil, type
).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount
from @T as T1
Kết quả:
ID NullCount
----------- -----------
1 1
2 3
Cập nhật:
Đây là phiên bản tốt hơn. Cảm ơn Martin Smith.
;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
(
select T1.*
for xml path('row'), elements xsinil, type
).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount
from @T as T1
Cập nhật:
Và với một chút nhanh hơn biểu thức XQuery.
;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select ID,
(
select T1.*
for xml path('row'), elements xsinil, type
).value('count(//*/@ns:nil)', 'int') as NullCount
from @T as T1
Nguồn
2012-01-31 12:18:37
Wooooowww !!! +1 –
= D> Tôi rất ấn tượng +1 –
[Tôi nghĩ bạn có thể cải thiện truy vấn phụ tại đây] (http://dba.stackexchange.com/a/14870/3690) –