sql >> Database >  >> RDS >> Sqlserver

Retourneer twee resultaatsets bij gebruik van WITH TempResults AS

Dit kan niet (voor zover ik weet). Er zijn drie tijdelijke oplossingen, een waarmee u twee afzonderlijke resultatensets kunt behouden en de andere twee waarvoor u de resultaten in dezelfde resultatenset moet samenvoegen (als een extra rij of een extra kolom).

  1. Push de resultaten in plaats van een CTE naar een tijdelijke tabel en vraag daar vervolgens naar.
  2. Voeg de telling samen met de werkelijke resultatenset als een andere rij:gebruik een UNION ALL en geef de telrij geschikte waarden voor ID, Name en RowID, zodat u deze uit de rest van de gegevens kunt extraheren
  3. Voeg de SELECT COUNT(*) toe in de primaire resultaatset als een extra kolom met een CROSS JOIN of vergelijkbaar.

Voor dit laatste kunt u dit doen door uw primaire zoekopdracht te wijzigen in:

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);

Ik kan niet instaan ​​voor de prestaties - je zou je moeten profileren.



  1. Provider genaamd pijpen provider fout 40 kan geen verbinding maken met SQL Server fout 2

  2. Hoe verander ik de waarde voor innodb_buffer_pool_size in MySQL op Mac OS?

  3. Hoe statische versus singleton-klassen werken (databases)

  4. gegevens die in het tekstgebied zijn ingevoerd, komen niet in de database die is ontworpen met php en mysqli