sql >> Databáze >  >> RDS >> Sqlserver

t-sql dotaz mezi tabulkou událostí a rozsahem dat

To, co hledáte, se běžně nazývá kontingenční dotaz. Pokud se ptáte, jak vytvořit křížový dotaz s statickým seznam sloupců, můžete udělat něco takového:

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

Podobně můžete použít funkci PIVOT, jak navrhuje Broken Link. Výše uvedené řešení i funkce PIVOT však spoléhají na statický deklarace sloupců. Pokud chcete dynamický seznam sloupců (aka dynamická křížová tabulka), pak jste mimo hranice toho, k čemu byl T-SQL primárně navržen. Je to možné s nějakým prchavým dynamickým SQL, ale je křehký a těžkopádný. Místo toho byste měli vytvořit sadu výsledků v komponentě střední vrstvy nebo použít nástroj pro vytváření sestav, který vytvoří výsledky křížové tabulky.



  1. Jak přidat indikátor Meridiem (AM/PM) k časové hodnotě v Oracle

  2. Nelze získat přístup k předvyplněné databázi SQLite pomocí PhoneGap/Cordova v systému Android

  3. Vyberte všechna pole, kde hodnota pole není v poli

  4. Chyba spouštění Oracle ORA-04091