webForumDet fria alternativet

order by case...

0 svar · 193 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

denna procedur hittade jag på nätet nånstans, men nu lyckas jag inte med mina modifieringar!
det är ganska lång kod men allt är ganska ointressant, det är order by längst ner jag inte får till.
så scrolla ner dit direkt! :)

CREATE PROCEDURE spStockPaging
@pagenum int, 
@perpage int,
@Sortcolumn int,
@Sortorder int
 
AS 
BEGIN 
SET NOCOUNT ON 
 
DECLARE 
        @ubound INT, 
        @lbound INT, 
        @pages INT, 
        @rows INT 
 
    SELECT 
        @rows = COUNT(*), 
        @pages = COUNT(*) / @perpage 
    FROM 
        tblStock WITH (NOLOCK) 
 
    IF @rows % @perpage != 0 SET @pages = @pages + 1 
    IF @pagenum < 1 SET @pagenum = 1 
    IF @pagenum > @pages SET @pagenum = @pages 
 
    SET @ubound = @perpage * @pagenum  
    SET @lbound = @ubound - (@perpage - 1)  
 
    SELECT 
        CurrentPage = @pagenum, 
        TotalPages = @pages, 
        TotalRows = @rows 
 
    -- this method determines the string values 
    -- for the first desired row, then sets the 
    -- rowcount to get it, plus the next n rows 
 
    -- här börjar hämtningen av värden
    Declare @Aonr varchar(50)
    Declare @Compartment varchar(50)
    Declare @Quantity int
    Declare @Create_date smalldatetime
 
    SET ROWCOUNT @lbound 
 
    SELECT 
        @Aonr = Aonr, 
        @Compartment = Compartment,
        @Quantity = Quantity,
        @Create_date = Create_date
    FROM 
        tblStock WITH (NOLOCK) 
    ORDER BY 
        	Case When @Sortcolumn = 1 And @Sortorder = 1 Then Aonr End Asc,
        	Case When @Sortcolumn = 1 And @Sortorder = 2 Then Aonr End Desc,
        	Case When @Sortcolumn = 2 And @Sortorder = 1 Then Create_date End Asc,
        	Case When @Sortcolumn = 2 And @Sortorder = 2 Then Create_date End Desc
 
    SET ROWCOUNT @perPage 
 

    SELECT 
        Aonr, Compartment, Quantity, Create_date
    FROM 
        tblStock WITH (NOLOCK) 
    WHERE 
        Aonr + '~' + Compartment
        >= @Aonr + '~' + @Compartment
    ORDER BY 
        	Case When @Sortcolumn = 1 And @Sortorder = 1 Then Aonr End Asc,
        	Case When @Sortcolumn = 1 And @Sortorder = 2 Then Aonr End Desc,
        	Case When @Sortcolumn = 2 And @Sortorder = 1 Then Create_date End Asc,
        	Case When @Sortcolumn = 2 And @Sortorder = 2 Then Create_date End Desc

    SET ROWCOUNT 0 
END
GO

dessa funkar:
sortcolumn = 1, sortorder = 1
sortcolumn = 1, sortorder = 2
sortcolumn = 2, sortorder = 1

funkar inte:
sortcolumn = 2, sortorder = 2

varför funkar det inte att sortera med sortcolumn = 2 och sortorder = 2?
jag får upp samma poster när jag bläddrar i pagingen.

dbms: sqlserver 2000

är det nån som fattar mitt problem, eller? :l

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)