PDA

View Full Version : یافتن رکوردهای غیر تکراری بر اساس یک فیلد خاص در sql server 2008



adabyron
یک شنبه 22 شهریور 1394, 13:34 عصر
با عرض سلام و خسته نباشید . من یک جدول دارم که اطلاعات مشتریها و پرونده هاشون توش ذخیره میشه به اسم tblCustomer که سه تا از فیلدهاش sal , codeMeli,pCode است. می خوام افرادی رو پیدا کنم که بیشتر از یک پرونده دارند یعنی رکوردهایی رو پیدا کنم که کد ملی یکسان با شماره پرونده های متفاوت دارند. اول از دستور count با group by codeMeli استفاده کردم که رکوردهایی که count > 1 هست رو پیدا کنه اما با این روش رکوردهایی که شماره پرونده یکسانی هم دارند هم شامل میشه درحالیکه من فقط رکوردهایی رو می خوام که شماره پرونده متفاوت داشته باشند .
ممنون میشه که راهنماییم کنین .

SabaSabouhi
یک شنبه 22 شهریور 1394, 13:39 عصر
با عرض سلام و خسته نباشید . من یک جدول دارم که اطلاعات مشتریها و پرونده هاشون توش ذخیره میشه به اسم tblCustomer که سه تا از فیلدهاش sal , codeMeli,pCode است. می خوام افرادی رو پیدا کنم که بیشتر از یک پرونده دارند یعنی رکوردهایی رو پیدا کنم که کد ملی یکسان با شماره پرونده های متفاوت دارند. اول از دستور count با group by codeMeli استفاده کردم که رکوردهایی که count > 1 هست رو پیدا کنه اما با این روش رکوردهایی که شماره پرونده یکسانی هم دارند هم شامل میشه درحالیکه من فقط رکوردهایی رو می خوام که شماره پرونده متفاوت داشته باشند .
ممنون میشه که راهنماییم کنین .

سلام
تو group by شماره پرونده رو هم اضافه کن

صبا صبوحی

adabyron
یک شنبه 22 شهریور 1394, 13:52 عصر
ممنون از پاسختون اما با این کار همه رکوردها رو میاره . یعنی به ازای هر کد ملی یه رکورد با یه شماره پرونده میاره اما من می خوام رکوردهایی رو بیاره که کد ملی یکسان اما شماره پرونده متفاوت هست
مثلا اگر جدول به این صورت باشه
نام/ کد ملی / شماره پرونده
علی/ 111/ 10
مینا/ 222/ 20
مریم/ 333/ 40
علی/ 111/ 10
مینا/ 222/ 50
فقط رکورد مینا که دو تا شماره پرونده متفاوت داره رو برام بیاره.

adabyron
دوشنبه 23 شهریور 1394, 12:34 عصر
??????????????????

SabaSabouhi
دوشنبه 23 شهریور 1394, 12:42 عصر
ممنون از پاسختون اما با این کار همه رکوردها رو میاره . یعنی به ازای هر کد ملی یه رکورد با یه شماره پرونده میاره اما من می خوام رکوردهایی رو بیاره که کد ملی یکسان اما شماره پرونده متفاوت هست
مثلا اگر جدول به این صورت باشه
نام/ کد ملی / شماره پرونده
علی/ 111/ 10
مینا/ 222/ 20
مریم/ 333/ 40
علی/ 111/ 10
مینا/ 222/ 50
فقط رکورد مینا که دو تا شماره پرونده متفاوت داره رو برام بیاره.

سلام
من به اشتباه نوشتم که شماره پرونده رو به group by اضافه کنی، منظورم اون ستونی بود که مقدارش برای «مینا» عدد 222 هست.
و این که فقط «مینا» در پاسخ دیده بشه، باید از having count (*) > 1 استفاده کنی. اما حتا با این فرمان هم فقط یک سطر برای
«مینا» در خروجی دیده می‌شه که اگه خواستی هر دو مقدار «مینا» رو داشته باشی باید خروجی این query رو با جدول اصلی دوباره
join کنی. ( توجه داشته باش که خروجی هر select یک جدول در نظر گرفته می‌شه )

صبا صبوحی

adabyron
دوشنبه 23 شهریور 1394, 14:34 عصر
مرسی اما با اینطوری هم همه رکوردها رو میاره من فقط میخوام رکورد مینا رو بیاره که شرایطی که گفتم رو داره ...