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

Při použití WITH TempResults AS vrátí dvě sady výsledků

To nelze udělat (pokud vím). Existují tři zástupná řešení, jedno, které vám umožní ponechat jako dvě odlišné sady výsledků, a další dvě, která vyžadují sloučení výsledků do stejné sady výsledků (buď jako další řádek nebo další sloupec).

  1. Namísto CTE vložte výsledky do dočasné tabulky a poté z ní dotazujte.
  2. Sloučit počet do skutečné sady výsledků jako další řádek:použijte UNION ALL a dejte řádku počtu vhodné hodnoty pro ID, Name a RowID, abyste je mohli extrahovat ze zbytku dat
  3. Přidejte SELECT COUNT(*) do primární sady výsledků jako další sloupec s CROSS JOIN nebo podobně.

V tomto případě to můžete provést změnou primárního dotazu na:

SELECT Id, Name, RowId, countTable.totalRows
    FROM ResultsTemp
        CROSS JOIN (SELECT COUNT(*) AS totalRows FROM ResultsTemp) AS countTable
    GROUP BY Id, Name, RowId 
    HAVING RowId BETWEEN @StartRow and (@StartRow + @MaxRows);

Nemohu ručit za výkon – museli byste se profilovat.



  1. Spusťte PDO s polem obsahujícím hodnoty null

  2. Jak vezmu poddotaz DISTINCT ON, který je řazen podle samostatného sloupce, a zrychlím jej?

  3. Import MySQL CSV - datum zadáno jako 0000-00-00 00:00:00, pokud má časové razítko milisekundy?

  4. Postgresql - výkon použití pole ve velké databázi