Haber makalelerinin bir listesini görüntülemek için kullanıyorum şu SP'ye sahibim. Tahmin edebileceğiniz gibi, @count
döndürecek satır sayısıdır, @start
satırları (iç sorguya göre sıralanır) satır seçmek için dizin, @orderby
sıralamak için sütunu gösterir ve @orderdir
bir yönünü veya sıralamak için diğer. Orijinal sorgum @orderdir
parametresini eklemeden önce here oldu.Saklı yordamda bir parametre olarak DESC ve ASC
ALTER PROCEDURE [mytable].[news_editor_paginate]
@count int,
@start int,
@orderby int,
@orderdir int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@count) * FROM
(
SELECT ne.*,n.publishstate,
(CASE WHEN @orderdir = 1 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END DESC,
CASE WHEN @orderby = 1 THEN ne.lastedit END DESC,
CASE WHEN @orderby = 2 THEN ne.title END ASC
)
WHEN @orderdir = 2 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END ASC,
CASE WHEN @orderby = 1 THEN ne.lastedit END ASC,
CASE WHEN @orderby = 2 THEN ne.title END DESC
)
END
) AS num
FROM news_edits AS ne
LEFT OUTER JOIN news AS n
ON n.editid = ne.id
)
AS a
WHERE num > @start
END
Artık hiçbir şey yanlış gitmiyor, ancak @orderby
parametresi çalışmıyor. @orderdir
parametresi olarak 1 sağlarsanız, bu parametreyi 2 olarak sağladığımla aynı sonuçları verir.
Evet, bu kadar açık gözüküyor şimdi yazdın. Teşekkürler, bunu cevap olarak işaretlemek için beklemek zorunda. –
Ter yok. Row_number'in çıkmasından birkaç kez önce kafamı bu şeylerin üzerine çizdim. – Gats