Ich brauche Hilfe, weil ich Probleme habe, durchzublättern und zu begrenzen, dass jede Seite nur einen Prozess nach dem anderen anzeigt. Ich habe so viele Dinge ausprobiert und mein Gehirn wurde gebraten. Hilfe ........ Also, wenn die @PageNum = 1 and @Pagesize = 10
und wenn der erste Prozess 7 Zeilen hat; erste Seite zeigt 7 Zeilen des ersten Prozesses (genau was ich will). Nun, wenn der Benutzer @PageNum = 2 and @Pagesize is 10
wählt und der zweite Prozess 11 hat. Ich möchte, dass es die Top 10 dieses nächsten Prozesses zeigt.MS SQL Seitennummerierung und Gruppierung
Derzeit zeigt es nur die letzten 8 des zweiten Prozesses.
vereinfachte ich die SQL-Business-Informationen zu entfernen und dann nur um zu zeigen, die Liste von dem, was ich zu tun habe mit:
/*
notes:
Parameters passed in are @PageNum and @PageSize
@PageNum is which page they user goes to
@PageSize is the max number of rows to show
*/
DECLARE @StartRow int, @EndRow int
SET @StartRow = (@PageNum -1) * @PageSize +1;
SET @EndRow = @PageNum * @PageSize;
WITH ProcessestoPageThru AS
(Select Name,
ProcessId,
ROW_NUMBER() OVER(ORDER BY Name, ProcessId,) as RowNo,
COUNT(Name) OVER() as RowCnt
from a whole bunch of tables
where a whole bunch of criteria
)
SELECT * INTO #tmp_ProcessestoPageThru
From ProcessestoPageThru
Where RowNo BETWEEN @StartRow AND @EndRow
Declare @ProcessID int
--Get the top ProcessID, We are only going to display one Process at a time
Select Top 1 @ProcessID = ProcessId
From #tmp_ProcessestoPageThru
Select *
from #tmp_ProcessestoPageThru
Where ProcessId = @ProcessId
Bitte siehe Beispiel angebracht: auch Example
welche Version von SQL Server? –
SQL Server 2008 r2 –
Viel besser jus, um das Beispieldatum und das erwartete Ergebnis zu zeigen. –