View Full Version : جایگزین مناسب برای  top(count(*))
  
abasfar
دوشنبه 07 شهریور 1390, 14: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, 15:09 عصر
سلام.
اگر می خواید بیشترین اختلاف را به دست بیارید،در دستور شما (1)TOP جواب می ده.
abasfar
دوشنبه 07 شهریور 1390, 15:13 عصر
ممنون از جواب شنما اما من میخوام
با اجرای این دستور هر تعداد سطر که بدست امد ان را مثلا نصف کنم یا یک چهارم کنم و ان مقدار سطر را برگردانم
Galawij
دوشنبه 07 شهریور 1390, 15:17 عصر
این لینک (http://barnamenevis.org/showthread.php?302625-مشکل-در-یک-query) را ببینید، روی فیلد ROWNUM مانور بدید.
abasfar
دوشنبه 07 شهریور 1390, 16:07 عصر
راستش من زیاد متوجه نشدم
abasfar
سه شنبه 08 شهریور 1390, 11: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, 11: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, 12: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.