V SQL Server 2008 a novějších přidejte COUNT(*)
OVER ()
jako jeden z názvů sloupců ve vašem dotazu a ten bude naplněn celkovým počtem vrácených řádků.
Opakuje se v každém jednotlivém řádku, ale k dispozici je alespoň hodnota.
Důvodem, proč mnoho jiných řešení nefunguje, je to, že u velmi rozsáhlých sad výsledků nebudete znát součet, dokud neopakujete všechny řádky, což v mnoha případech není praktické (zejména řešení sekvenčního zpracování). Tato technika vám poskytne celkový počet po volání prvního IDataReader.Read()
, například.
select COUNT(*) OVER () as Total_Rows, ... from ...