PDA

View Full Version : كارنكردن ROW_NUMBER() OVER (ORDER BY @SortColumn) در Stored



m110_110
شنبه 26 آذر 1390, 13:41 عصر
با سلام
نمي دونم چرا ROW_NUMBER() OVER (ORDER BY @SortColumn) در Stored كار نمي كند
خيلي هم جستجو كردم ولي باز به نتيجه اي نرسيدم
به عنوان مثال در :
select *,ROW_NUMBER() OVER (ORDER BY @SortColumn) from Tbl1

هر پارامتري به عنوان @SortColumn مي دهم هيچ تاثيري در خروجي كوئري ندارد
اگر كسي مي تواند لطفا راهنمايي كند

micro24
یک شنبه 27 آذر 1390, 22:12 عصر
سلام

من کد شما را تست گرفتم اگر declare @SortColumn int کار میکند، مشکلی ندارد.

baktash.n81@gmail.com
دوشنبه 28 آذر 1390, 08:29 صبح
سلام

احتمالا تا حالا به این نکته برخورد کردی که تو Order by نمی تونی از پارامتر استفاده کنی ... روشی که من پیدا کردم استفاده از Case هست اینم نمونه کد و لینک راهنماییش

DECLARE @col VARCHAR(9)
SET @col = 'firstname'

IF @col IN ('firstname', 'email')
SELECT * FROM blat
ORDER BY CASE @col
WHEN 'firstname' THEN firstname
WHEN 'email' THEN email
END
ELSE
SELECT * FROM blat
GO

http://databases.aspfaq.com/database/how-do-i-use-a-variable-in-an-order-by-clause.html

m110_110
دوشنبه 28 آذر 1390, 10:11 صبح
با سلام
ممنون از جوابتون اما توي Row_number ]i چطوري به كار ببرم؟

baktash.n81@gmail.com
دوشنبه 28 آذر 1390, 10:47 صبح
Select *, Row_number() over (order by case @s when 'fieldname' then fieldname ... end ) from tb1

m110_110
سه شنبه 29 آذر 1390, 07:12 صبح
با سلام
قبلش همين طور رفتم ولي مثل اينكه يك اشتباه كوچيك كرده بودم جواب نمي گرفتم ولي به هر حال بالاخره جواب گرفتم
ممنون ازكساني كه در اين بحث شركت كردند و كمك نمودند
يا علي