# پایگاه‌های داده > SQL Server > T-SQL >  محاسبه اختلاف دو رکورد انتخاب شده

## khorsandreza

سلام دوستان لطفا به تصویر زیر نگاه کنید .
فرض بر این است مدیر ارشد چند فروشگاه زنچیره تصمیم دارد مراجعات به فروشگاه ها برای خرید را در ماه های مختلف کنترل و بررسی کند در و حاصل اختلاف دو رکورد در انتهای جدول مشاهده نماید  حالا بحث انتخاب به سطرها و گرید مربوط به محیط برنامه نویسی است  که من کاری به آن بخش ندارم می خواهم بدانم ولی در T-Sqlچکونه می توانیم اختلاف دو رکوزد را بدست بیاوریم؟

----------


## khorsandreza

> سلام دوستان لطفا به تصویر زیر نگاه کنید .
> فرض بر این است مدیر ارشد چند فروشگاه زنچیره تصمیم دارد مراجعات به فروشگاه ها برای خرید را در ماه های مختلف کنترل و بررسی کند در و حاصل اختلاف دو رکورد در انتهای جدول مشاهده نماید  حالا بحث انتخاب به سطرها و گرید مربوط به محیط برنامه نویسی است  که من کاری به آن بخش ندارم می خواهم بدانم ولی در T-Sqlچکونه می توانیم اختلاف دو رکوزد را بدست بیاوریم؟


با پوزش بی جهت تاپیک را بروز کردم  دوستان برای این موضوع راه حلی پیشنهاد ندارند؟

----------


## Mahmoud.Afrad

مجموعه رکوردها را با خودش join کنید
select t1.Date as date1, t2.Date as date2 , t2.Value-t1.Value as diffValue
from [TableName] t1 join [TableName] t2 on t1.Date < t2.Date
where t1.Date='139602' and t2.Date='139608'
اگر شرط را حذف کنید تمام تاریخ‌ها را با تاریخ‌های بعد از خودش مقایسه میکند که البته میشه به یک سال بخصوص محدودش کرد یا حتی یک ماه از دو سال را مقایسه کرد.

----------


## khorsandreza

ابتدا یک تشکر زبانی چند روز بود درگیرش بودم دوما یک مثال از راهنمائی  استادانه شما  ایجاد کردم اگر دوستانی مثل به همیچین مشکلی برخورد کردند از دانش کاربردی شما بی بهره نباشند

CREATE TABLE [dbo].[Test](
	[xdate] [nvarchar](8) NULL,
	[val1] [int] NULL,
	[val2] [int] NULL,
	[val3] [int] NULL
) ON [PRIMARY]

INSERT [dbo].[Test] ([xdate], [val1], [val2], [val3]) VALUES (N'139601', 101, 310, 255)
INSERT [dbo].[Test] ([xdate], [val1], [val2], [val3]) VALUES (N'139602', 89, 314, 251)
INSERT [dbo].[Test] ([xdate], [val1], [val2], [val3]) VALUES (N'139603', 110, 210, 198)
INSERT [dbo].[Test] ([xdate], [val1], [val2], [val3]) VALUES (N'139604', 113, 279, 218)

select  t1.xDate as date1, 
t2.xDate as date2,  
t2.Val1-t1.Val1 as val1,
t2.Val2-t1.Val2 as val2 ,
t2.Val3-t1.Val3 as val3
from test t1 join test t2 on t1.xDate < t2.xDate
where t1.xDate='139601' --and t2.xDate='139603'

----------

