To, czego szukasz, jest powszechnie nazywane zapytaniem krzyżowym. Jeśli pytasz, jak utworzyć zapytanie krzyżowe z statycznym listę kolumn, możesz zrobić coś takiego:
Select Title
, Min( Case When DatePart(mm, [Date]) = 7 And DatePart(yy, [Date]) = 2010 Then MetaData End ) As [Jul-10]
, Min( Case When DatePart(mm, [Date]) = 8 And DatePart(yy, [Date]) = 2010 Then MetaData End ) As [Aug-10]
, Min( Case When DatePart(mm, [Date]) = 9 And DatePart(yy, [Date]) = 2010 Then MetaData End ) As [Sep-10]
...
From Table
Where [Date] Between @StartDate And @EndDate
Group By Title
Podobnie możesz użyć funkcji PIVOT sugerowanej przez Broken Link. Jednak zarówno powyższe rozwiązanie, jak i funkcja PIVOT opierają się na statycznym deklaracje kolumn. Jeśli chcesz mieć dynamiczną listę kolumn (czyli dynamiczną tabelę przestawną), to wykraczasz poza granice tego, do czego przede wszystkim zaprojektowano T-SQL. To możliwe z jakimś dziwnym, dynamicznym SQL, ale jest kruchy i nieporęczny. Zamiast tego powinieneś zbudować zestaw wyników w komponencie warstwy środkowej lub użyć narzędzia do raportowania, które zbuduje wyniki w tabeli krzyżowej.