PDA

View Full Version : این کوئری چه مشکلی داره



sasan123
سه شنبه 26 شهریور 1387, 19:24 عصر
select (case tarikh3 when tarikh3=DateDiff(day,1,GetDate)())

then (adadshakhes ) else 0 end)-
(case tarikh3 when tarikh3=Getdate() then (adadshakhes ) else 0 end)
from shakhes_sabet

می خواهم تاریخ جاری سیستم را بگیرم واز ان تاریخ روز قبل را بدست اورم و فیلد دیگری دارم به نام adadshakhes که می خواهم این را منهای case دوم که تاریخ جاری را می گیرد و adadshakhes ان را بر می گرداند

Amir_Safideh
سه شنبه 26 شهریور 1387, 21:12 عصر
SELECT (CASE WHEN tarikh3 = DATEDIFF(DAY,1,GETDATE)THEN(adadshakhes)ELSE 0 END)-
(CASE WHEN tarikh3 = GETDATE THEN (adadshakhes) ELSE 0 END)
FROM shakhes_sabet
--------------
موفق باشید .

sasan123
چهارشنبه 27 شهریور 1387, 09:26 صبح
دوست عزیز با تشکر هنگام اجرا این error را می ده
invalid column name 'GETDATE'
تو را خدا کمک کنید

Touska
چهارشنبه 27 شهریور 1387, 10:22 صبح
تا اونجایی می دونم GetDate باید تابع برکشت تاریخ فعلی باشه :


SELECT (CASE WHEN tarikh3 = DATEDIFF(DAY,1,GETDATE())THEN(adadshakhes)ELSE 0 END)-
(CASE WHEN tarikh3 = GETDATE() THEN (adadshakhes) ELSE 0 END)
FROM shakhes_sabet


و باید بشکل تابع صدا زده بشه

sasan123
چهارشنبه 27 شهریور 1387, 10:50 صبح
دوستان اگه بخواهم همان کد بالا از group by هم استفاده کنم چه کار کنم
یعنی group by id3 تا فقط تفاضل دو عدد شاخص که دارای id3 یکسانی هستند را از هم کم کند

Amir_Safideh
چهارشنبه 27 شهریور 1387, 13:35 عصر
SELECT (CASE WHEN tarikh3 = DATEDIFF(DAY,1,GETDATE())THEN(adadshakhes)ELSE 0 END)-
(CASE WHEN tarikh3 = GETDATE() THEN (adadshakhes) ELSE 0 END)
FROM shakhes_sabet
GROUP BY ID3
-------------
موفق باشید.

sasan123
چهارشنبه 27 شهریور 1387, 15:45 عصر
دوست عزیز amir_safideh
group by id3 به ان شکل را error می دهد و اگر به این شکل هم حلش کنم جواب اشتباه را می دهد group by id3,addashakhes,tarikh3 اصلا این کوئری برای کار من درست ببخشید که دو باره می گم من یک سری کالا دارم با id3 مشخص می خواهم کالایی را با مثلا یک id3 مشخص را پیدا کنم تاریخ امروز را پیدا کنم عدد شاخص مربوط به ان را بدست اورم و تاریخ مربوط به روز قبل همین کالا را نیز بدست اورم و عدد شاخص را بدست اورم و عدد شاخص اول را منهای عدد شاخص دوم کنم و نشان دهم و برای ما بقی نیز همین طور

AminSobati
پنج شنبه 28 شهریور 1387, 20:51 عصر
دوست عزیزم لطفا در صورت امکان Scipt جدول و چند رکورد نمونه پست کنین و روی اون توضیح بدین

sasan123
جمعه 29 شهریور 1387, 08:05 صبح
جدول فیلد های ان id3, adadshakhes, tarikh3 از جدول sha
در id3 ای دی کالاها که ممکن تکرار شود و تاریخ تاریخ ثبت ان تاریخ و adadshakhes قیمت ان در روز های متفاوت می باشد حال می خواهم تاریخ امروز را بدست اورم و adadshakhes مربوط به ان را برای مثلا id3=2 و از تاریخ امروز یکی کم کنم و تاریخ دیروز را بست اورم و adadshakhes مربوط به ان را برای همان id3=2 بدست اورم مثال عددی
2و200و2008/3/4و برای دومی [code]2و203و2008/3/3[/ CODE]که تفاوت این دو عدد شاخص می شود 3 می خواهم این را برگردونه و برای کالاهای بعدی نیز همینطور مثلا برای id3=3 این اعمال را تکرار کند و همین طور تا همه ی id3 فکر کنم که باید از group by استفاده کنم ولی چه طوری را نمی دانم

sasan123
شنبه 30 شهریور 1387, 09:36 صبح
(select adadshakhes from shakhes_sabet where tarikh3 = DATEDIFF(DAY , 1 , GETDATE()) ) - (select adadshakhes from shakhes_sabet where DATEDIFF(DAY ,GETDATE(),tarikh3)=0 )
دوستان من این کد را برای همان کوئری که می خواستم نوشتم و لی این کوئری فقط زمانی درست کار می کند که تنها جدول من دو عدد در داخل جدولم باشد برای بیش از ان خطا می دهد دوستان در ضمن من می خواهم که از توابع سفارشی کاربر استفاده کنم کمک کنید چرا هیچ کس کمک نمی کنه

AminSobati
شنبه 30 شهریور 1387, 13:07 عصر
select
id3, tarikh3,adadshakhes, adadshakhes -
(select adadshakhes from shakhes_sabet where DATEDIFF(day,t1.tarikh3,tarikh3)=-1 and id3=t1.id3 ) as N'تفاوت'
from shakhes_sabet t1
order by id3,tarikh3

sasan123
شنبه 30 شهریور 1387, 14:51 عصر
aminsobati متشکرم نمی دانم که چه جوری تشکر کنم ولی یک مشکل کوچک دیگه این کد دوبار عمل می کنه یعنی به جای تفاوت یک بار null و یک بار تفاضل را نشان می دهد یعنی به ازای هر تفاضلی که برقرار باشد تفاضل را نشان داده و یک بار دیگر null را نشان می دهد به ازای همان id3 این مشکل را چه جوری حل کنم

AminSobati
شنبه 30 شهریور 1387, 23:25 عصر
این طبیعیه، NULL به این خاطر بدست میاد که یک کالا برای حالتی که زمانی قبل تر از خودش نداره چیزی براش بدست نمیاد. میتونین کل اون Query رو یک Sub Query فرض کنین و از طریق Query بیرونی رکوردهای حاوی NULL رو فیلتر کنین

sasan123
یک شنبه 31 شهریور 1387, 08:13 صبح
جناب aminsobati یک دنیا ممنون می تونم یک سوال دیگه بپرسم می دانم که خیلی ابتدایی و لی اگه می شه جوابم را بدهید می خواهم اخرین فیلد مربوط به هر id3 یعنی تفاوت را برام باز گردونه و درصد ان را محاسبه کنم و نشان دهم می شه راهنمایی کنید

AminSobati
دوشنبه 01 مهر 1387, 02:44 صبح
متوجه نشدم مثال بزنید

sasan123
دوشنبه 01 مهر 1387, 08:43 صبح
با تشکر یعنی اگه تاریخ ان روز که از سیستم می گیره 2008/02/27 و چنین تاریخی در پایگاه موجود می باشد همان فیلد تفاوت را که با کوئری بالا محاسبه کردهایم برایمان باز گرداند و اگر چنان چه این تاریخ در پایگاه نباشد تاریخ روز قبل که 2008/02/26را فیلد تفاوت مربوط به ان را باز گرداند و در مورد سوال دومم این که در مورد همان کوئری اگر بخواهم مثلا همان فیلد تفاوت که مثلا شده 3 الان با این کوئری 3 تقسیم بر 100 را نشان دهد 2008/04/26وadadshakhes ان 12 , 2008/04/27 , adadshakhes ان 4 تفاوت به درصد /.08

sasan123
سه شنبه 02 مهر 1387, 12:39 عصر
دوستان کسی جواب سوال مرا نمی داند