masz dwie opcje
mozesz uzyc pivot'a jesli liczba wartosci kolumny Nazwa jest stala (inaczej musialbys budowac dynamiczne zapytanie)
lub mozesz zrobic kilka odpowiednich zlaczen (join), ale to tez jesli liczba wartosci kolumny Nazwa jest stala i nie za duza
mozna ocywiscie jeszcze kilka innych rozwiazan wymyslic, posilkujac sie jakimis tymczasowymi tabelami, czy nawet kursorami (fuj)
declare @t1 table(nazwa nvarchar(50), data datetime)
insert into @t1 values ('T1', '2010-7-22')
insert into @t1 values ('T2', '2010-7-22')
insert into @t1 values ('T3', '2010-7-22')
insert into @t1 values ('T4', '2010-7-22')
insert into @t1 values ('T1', '2010-7-23')
insert into @t1 values ('T2', '2010-7-23')
insert into @t1 values ('T4', '2010-7-23')
insert into @t1 values ('T1', '2010-7-24')
insert into @t1 values ('T2', '2010-7-24')
insert into @t1 values ('T3', '2010-7-24')
select * from @t1
-- PIVOT
select data, [T1], [T2], [T3], [T4]
from @t1
pivot
(
count(nazwa)
for nazwa in ([T1], [T2], [T3], [T4])
) as T
-- JOIN
select T1.data, T1.nazwa as T1, T2.nazwa as T2, T3.nazwa as T3, T4.nazwa as T4
from (select * from @t1 where nazwa = 'T1') as T1
left join (select * from @t1 where nazwa = 'T2') as T2 on T1.data = T2.data
left join (select * from @t1 where nazwa = 'T3') as T3 on T1.data = T3.data
left join (select * from @t1 where nazwa = 'T4') as T4 on T1.data = T4.data