# پایگاه‌های داده > SQL Server > T-SQL >  حذف موارد عدم تایید برا اساس نوبت (برا مفهوم بیشتر عکس ضمیمه شده)

## رامین مرادی

سلام وقت بخیر دوستان
یه جدول دارم که یه کد داره و یه نوبت و یه وضعیت
حالا ممکنه یه کد چندتا نوبت بازدید داشته باشه
ممکنه هم تو نوبت اول تایید بشه یا ممکنه تو نوبت n ام تایید بشه

خب تا اینجا مشکلی نیست 
حال من نیاز دارم که کد هایی که تایید نشدن برا اساس آخرین نوبت رو استخراج کنم. نمونه خروجی رو هم قرار دادم. ممنون میشم در این مورد راهنماییم کنید.
Untitled.png

----------


## sg.programmer

از این استفاده کن
از ستون های کد و وضعیت گروپ بای بگیر



SELECT cust_city, cust_country, 
MAX(outstanding_amt) 
FROM customer 
GROUP BY cust_country, cust_city 
ORDER BY cust_city;

----------


## sg.programmer

راستی باید یک where  اول بزاری اونای تا NOK هستن را بگیره

----------


## Mahmoud.Afrad

> راستی باید یک where  اول بزاری اونای تا NOK هستن را بگیره


با این شرط اگر کدی وجود داشته باشد که چند نوبت تایید نشده ولی در آخر تایید شده هم انتخاب خواهد شد در صورتی که صورت مسئله اونهایی رو میخواد که تایید نشدند.

بایست براساس کد گروهبندی کنید و گروههایی رو بگیرید که ستون وضعیت دارای 'ok' نباشد.

----------


## رامین مرادی

> با این شرط اگر کدی وجود داشته باشد که چند نوبت تایید نشده ولی در آخر تایید شده هم انتخاب خواهد شد در صورتی که صورت مسئله اونهایی رو میخواد که تایید نشدند.
> 
> بایست براساس کد گروهبندی کنید و گروههایی رو بگیرید که ستون وضعیت دارای 'ok' نباشد.


مد نظر براساس آخرین نوبت که nok هست بگیره. که کلیه nok هارو برمیگردونه

----------


## Mahmoud.Afrad

> مد نظر براساس آخرین نوبت که nok هست بگیره. که کلیه nok هارو برمیگردونه



with cte
as
(
    select id=1 , PriodicCheck=1 , status='ok'
    union select id=5 , PriodicCheck=1 , status='nok'
    union select id=6 , PriodicCheck=1 , status='nok'
    union select id=5 , PriodicCheck=2 , status='nok'
    union select id=5 , PriodicCheck=3 , status='ok'
)
select id, max(PriodicCheck) LastPriodicCheck
from cte
group by id
having count(case status when 'ok' then status else null end)=0

----------

