Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връща два набора резултати при използване на WITH TempResults AS

Това не може да се направи (доколкото ми е известно). Има три заобиколни решения, едното ви позволява да запазите като два отделни набора от резултати, а другите две изискват обединяване на резултатите в един и същ набор от резултати (като допълнителен ред или допълнителна колона).

  1. Вместо CTE, избутайте резултатите във временна таблица, след което направете заявка от нея.
  2. Слейте броя в действителния набор от резултати като друг ред:използвайте UNION ALL и дайте на реда за броене подходящи стойности за ID, Name и RowID, така че да можете да ги извлечете от останалите данни
  3. Добавете SELECT COUNT(*) в основния набор от резултати като допълнителна колона с CROSS JOIN или подобни.

За последното можете да го направите, като промените основната си заявка на:

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

Не мога да гарантирам за представянето - трябва да направите профил.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2005 Memory Pressure и проблем със записите в tempdb

  2. SQL групиране по брой на бройките

  3. t-sql създаване на потребител и предоставяне на изпълнение при разрешение за съхранени процедури

  4. SQL Server 2008 - Завъртане на една колона, групиране по друга, поддържане на препратка към трета

  5. Грешка 28000:Неуспешно влизане за потребител DOMAIN\\user с pyodbc