PDA

View Full Version : سوال: مشکل در نوشتن دستور Select



mohammad_2039
سه شنبه 07 اردیبهشت 1389, 21:32 عصر
باسلام
دوستان من تو یکی از جداول بانک Sql یه فیلد دارم که از اعداد پر میشه این اعداد ممکنه که چندتا چندتا باهم تکراری باشند. حالا من نیاز دارم که جمع اعداد این فیلد رو بدست بیارم به شرطی که از هر دسته فقط یکی رو انتخاب کنه. یعنی اگه 5 تا 2 دارم و 3تا 6 و 6 تا 4 از هر کدوم یکی رو انتخاب و جمع کنه و عدد 12 رو برگردونه:لبخند: دستور select رو چطوری باید بنویسم. با تشکر

s.khoshfekran
سه شنبه 07 اردیبهشت 1389, 21:46 عصر
از RankNumber() استفاده کن!!

behnam25214
سه شنبه 07 اردیبهشت 1389, 22:45 عصر
سلام دوست عزیز میتونی از کلمه DISTINCT استفاده کنی.

↓با دستور زیر شماره های تکراری رو نشون نمیده↓



SELECT DISTINCT ID
FROM Table1;


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



SELECT DISTINCT Sum(Table1.ID) AS SumOfID
FROM Table1;

mohammad_2039
چهارشنبه 08 اردیبهشت 1389, 06:53 صبح
سلام دوست عزیز میتونی از کلمه DISTINCT استفاده کنی.

↓با دستور زیر شماره های تکراری رو نشون نمیده↓



SELECT DISTINCT ID
FROM Table1;


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



SELECT DISTINCT Sum(Table1.ID) AS SumOfID
FROM Table1;



جواب نداد، دوباره داره همه رو با هم جمع میکنه انگار از sum تنها داره استفاده میکنه ؟؟:متعجب::گریه::عصبانی++:

mohammad_2039
چهارشنبه 08 اردیبهشت 1389, 06:54 صبح
از RankNumber() استفاده کن!!

امکان داره با کد بفرمایید چطوری باید از این تابع استفاده کنم:متفکر: ممنون میشم:لبخندساده:

supporter
چهارشنبه 08 اردیبهشت 1389, 08:56 صبح
Select Sum(Distinct(FieldName)) From TableName

محمد سلیم آبادی
چهارشنبه 08 اردیبهشت 1389, 13:20 عصر
سلام دوست عزیز میتونی از کلمه DISTINCT استفاده کنی.

↓با دستور زیر شماره های تکراری رو نشون نمیده↓



SELECT DISTINCT ID
FROM Table1;


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



SELECT DISTINCT Sum(Table1.ID) AS SumOfID
FROM Table1;



مورد اول درست هست. ولی مورد دوم اینطور نیست. یعنی DISTINCT بعد از محاسبه ی SUM اعمال می شود. پس مشکل هنوز باقی می ماند. در واقع ماده های عبارت SELECT بر اساس یک ترتیب منطقی اجرا می شوند.
Query صحیح در پست قبل نمایش داده شده است.