View Full Version : جایگزین مناسب برای top(count(*))
abasfar
دوشنبه 07 شهریور 1390, 13:18 عصر
سلام
مشکل در کد
top(count(*)) زیر دارم من چه چیزی را جایگزین کنم برای این کد
SELECT top(count(*)) RootUrl,DATEDIFF(Hour,LastUpdate,getdate())as Last
FROM TUrlRoot
where DATEDIFF(Hour,LastUpdate,getdate()) > 5
order by last desc
Galawij
دوشنبه 07 شهریور 1390, 14:09 عصر
سلام.
اگر می خواید بیشترین اختلاف را به دست بیارید،در دستور شما (1)TOP جواب می ده.
abasfar
دوشنبه 07 شهریور 1390, 14:13 عصر
ممنون از جواب شنما اما من میخوام
با اجرای این دستور هر تعداد سطر که بدست امد ان را مثلا نصف کنم یا یک چهارم کنم و ان مقدار سطر را برگردانم
Galawij
دوشنبه 07 شهریور 1390, 14:17 عصر
این لینک (http://barnamenevis.org/showthread.php?302625-مشکل-در-یک-query) را ببینید، روی فیلد ROWNUM مانور بدید.
abasfar
دوشنبه 07 شهریور 1390, 15:07 عصر
راستش من زیاد متوجه نشدم
abasfar
سه شنبه 08 شهریور 1390, 10:04 صبح
دوستان مشکل من هنوز حل نشده لطفا کمک کنید
من این کد را نوشتم اما میدونم زیاد کد جالبی نیست
declare @top int
SELECT @top=count(*)/2 FROM TUrlRoot where (DATEDIFF(Hour,LastUpdate,getdate()) > 5)
SELECT top(@top) RootUrl,DATEDIFF(Hour,LastUpdate,getdate())as Last
FROM TUrlRoot
where DATEDIFF(Hour,LastUpdate,getdate()) > 5
order by last desc
Galawij
سه شنبه 08 شهریور 1390, 10:37 صبح
سلام،
یک مثال براتون می ذارم، با نام جدول و نام کلید اصلی جدول مد نظر تغییر بدید.
نکته: این مثال یک دوم کل رکودهای خروجی را بر می گرداند.
WITH CTE AS
(
Select IdShiftType,DATEDIFF(Hour,BeginHour,GetDate())as Last
From TbShiftType
Where DATEDIFF(Hour,BeginHour,GetDate()) > 5
)
SELECT *
FROM(
SELECT row_number()over(order by IdShiftType)as RowNum,Last
FROM CTE
)Result WHERE RowNum <=((Select Count (*) from CTE)/2)
abasfar
سه شنبه 08 شهریور 1390, 11:11 صبح
ممنون از جواب شما استاد عزیز
فقط من در درج کردن با این کد مشکل پیدا کردم به همین خاطر از یک PROCEDURE استفاده کردم ایا روش مناسبی ست
insert into tab1(url)
(
WITH CTE AS
(
SELECT RootUrl,DATEDIFF(Hour,LastUpdate,getdate())as Last
FROM TUrlRoot
where DATEDIFF(Hour,LastUpdate,getdate()) > 5
)
SELECT RootUrl FROM(
SELECT row_number()over(order by last desc)as RowNum,RootUrl,last FROM CTE)Result
WHERE RowNum <=((Select Count(*)from CTE)/2) and not exists(select * from TWaitingIndex where url like RootUrl)
)
از این کد استفاده کرم
insert into tab1(url)
exec prod1
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.