PDA

View Full Version : انتخاب سطرهای دلخواه یک جدول و تفکیک آنها



اسماعیل ابراهیمی
چهارشنبه 30 فروردین 1391, 20:44 عصر
با سلام
من می خوام اختلاف فیلد تاریخ دو رکورد رو بدست بیارم
می خوام همیشه 2 سطر اول که با شرط برابرند انتخاب بشن و اختلاف تاریخ اون 2 تا سطر برگردونده بشه

برای انتخاب 2 سطر اول مشکلی نیست و با دستور زیر بدست میاد

select TOP 2 [pay_date] from [Peyment] where [pay_sm_id]=2 and [pay_cus_id]=3

که نتیجه اش میشه این :

2012/04/22
2012/04/26

حالا می خوام اختلاف بین این دو فیلد نتیجه رو بوسیله تابع DATEDIFF به برنامه ام برگردونم ولی نمی دونم که چور از هم جداشون کنم ..

ممنون میشم راهنمایی بفرمایین

با تشکر

اسماعیل ابراهیمی
چهارشنبه 30 فروردین 1391, 21:05 عصر
خودم یه راه حل به ذهنم رسید ولی نمی تونم عملیش کنم و اونم اینه که :
ابتدا سطر اول رو با دستور Top 1 از روی Select انجام شده بگیرم
بعدش
سطر آخر که همون سطر دوم میشه رو با دستوری که آخرین سطر رو برمیگردونه بگیرم و بعد روشون عملیات موردنظرم رو انجام بدم

لطفاً هر کسی می تونه این روش منو انجام بده کدش رو بزاره

با تشکر فراوان

اسماعیل ابراهیمی
پنج شنبه 31 فروردین 1391, 19:56 عصر
واقعا راست میگن که کس نخوارد پشت من جز ناخن انگشت من

نوشتمش .. اینم کدش :

declare @num int
declare @diff int
declare @date1 datetime
declare @date2 datetime

--***************************
if (@condition=1)
begin
select @num=min([pay_id]) from [Peyment] where [pay_sm_id]=@pay_sm_id and [pay_cus_id]=@pay_cus_id
select top 1 @date1=[pay_date] from (select top 2 [pay_date] from [Peyment] where ([pay_sm_id]=@pay_sm_id and [pay_cus_id]=@pay_cus_id)and [pay_id]=@num ) a
select top 1 @date2=[pay_date] from (select top 2 [pay_date] from [Peyment] where ([pay_sm_id]=@pay_sm_id and [pay_cus_id]=@pay_cus_id )and [pay_id]=@num+1) b
SELECT @diff=DATEDIFF(day,@date1,@date2)

if (@diff <> 0)

return @diff

else

return 0
end