PDA

View Full Version : محاسبه اختلاف دو رکورد انتخاب شده



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

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

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

Mahmoud.Afrad
جمعه 19 آبان 1396, 03:49 صبح
مجموعه رکوردها را با خودش 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
شنبه 20 آبان 1396, 02:07 صبح
ابتدا یک تشکر زبانی چند روز بود درگیرش بودم دوما یک مثال از راهنمائی استادانه شما ایجاد کردم اگر دوستانی مثل به همیچین مشکلی برخورد کردند از دانش کاربردی شما بی بهره نباشند

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'