sql >> Database >  >> RDS >> Sqlserver

t-sql-query tussen een tabel met gebeurtenissen en een datumbereik

Wat u zoekt, wordt gewoonlijk een kruistabelquery genoemd. Als u vraagt ​​hoe u een kruistabelquery kunt maken met een statische lijst met kolommen, kunt u zoiets als volgt doen:

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

Op dezelfde manier kunt u de PIVOT-functionaliteit gebruiken zoals voorgesteld door Broken Link. Zowel de bovenstaande oplossing als de PIVOT-functionaliteit zijn echter afhankelijk van statisch kolom verklaringen. Als je een dynamische lijst met kolommen wilt (ook wel dynamische kruistabel genoemd), dan ben je buiten de grenzen van waar T-SQL in de eerste plaats voor is ontworpen. Het is mogelijk met wat vluchtige dynamische SQL, maar het is broos en omslachtig. In plaats daarvan moet u de resultatenset bouwen in een middencomponent of een rapportagetool gebruiken die kruistabelresultaten maakt.



  1. Hoe het aantal en de namen van verschillende tekens in een string in PL/SQL te vinden?

  2. Mysql selecteert rijen wisselen voor elke uitvoering

  3. Postgres:de beste manier om gegevens van een openbaar schema van een DB naar een nieuw schema van een andere DB te verplaatsen

  4. GROUP_CONCAT() Functie in MySQL