sql >> Databasteknik >  >> RDS >> Sqlserver

t-sql-fråga mellan en händelsetabell och ett datumintervall

Det du söker kallas vanligtvis för en korstabellsfråga. Om det du frågar är hur man bygger en korstabellsfråga med en statisk lista med kolumner, kan du göra något så här:

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

På samma sätt kan du använda PIVOT-funktionen som föreslås av Broken Link. Men både ovanstående lösning och PIVOT-funktionaliteten är beroende av statisk kolumndeklarationer. Om det du vill ha är en dynamisk lista med kolumner (a.k.a. dynamisk korstabell), så är du utanför gränserna för vad T-SQL i första hand utformades för att göra. Det är möjligt med lite mycket dynamisk SQL men den är skör och besvärlig. Istället bör du bygga upp resultatuppsättningen i en mellanskiktskomponent eller använda ett rapportverktyg som skapar korstabellresultat.



  1. SQLite UNIK begränsning

  2. Anslutningshantering och strypning med ProxySQL

  3. Cacha MySQL-frågor

  4. infoga DEFAULT-värden