Sasiit Ответов: 2

Как я могу получить последние записи, основываясь только на invcreated


How do I get the latest record only based on the invcreated. there are more than 1lak records and same jobno having more than 100 records. In an example, I am taken only one jobno


Теперь запрос возвращает
JobOrderID           JobNo                     INVInvoiceid         INVInvoiceNo         INVStatusID INVInvoiceModeID INVCreateddate
-------------------- ------------------------- -------------------- -------------------- ----------- ---------------- -----------------------
2802                 13011900263               43877                INF220519025921      7           2                2019-05-22 15:16:00.000
2802                 13011900263               43881                NULL                 1           2                2019-05-22 16:29:00.000


Но Мне Нужно ...

JobOrderID           JobNo                     INVInvoiceid         INVInvoiceNo         INVStatusID INVInvoiceModeID INVCreateddate
-------------------- ------------------------- -------------------- -------------------- ----------- ---------------- -----------------------
2802                 13011900263               43881                NULL                 1           2                2019-05-22 16:29:00.000


Что я уже пробовал:

select 
J.JobOrderID,J.JobNo,
INV.InvoiceID as INVInvoiceid,INV.InvoiceNo as INVInvoiceNo,INV.StatusID as INVStatusID,INV.InvoiceModeID as INVInvoiceModeID,
INV.Createddate as INVCreateddate
from  ffs_tbl_joborder J  
inner join FFS_Tbl_AirJob AJ on AJ.AirJobID=J.JobOrderID and AJ.JobNo=J.JobNo 
left join FFS_TBl_Invoice INV on INV.JobOrderID=J.JobOrderID and INV.JobNo=J.JobNo  and INV.JobType=J.JobType
where J.jobno='13011900263' and INV.JobType='AirJob' 
group by J.JobOrderID,J.JobType,J.JobNo,J.Status,AJ.Status,INV.InvoiceID,INV.InvoiceNo,INV.StatusID,INV.InvoiceModeID,INV.Createddate 

2 Ответов

Рейтинг:
6

Sasiit

select 
J.JobOrderID,J.JobType,J.JobNo,J.Status as JoborderStatus,AJ.Status as AirJobStatus,
isnull(INV.InvoiceID,0) as INVInvoiceid,isnull(INV.InvoiceNo,0) as INVInvoiceNo,isnull(INV.StatusID,0) as INVStatusID,isnull(INV.InvoiceModeID,0) as INVInvoiceModeID
from  ffs_tbl_joborder J  
inner join FFS_Tbl_AirJob AJ on AJ.AirJobID=J.JobOrderID and AJ.JobNo=J.JobNo 
left join (
select JobOrderID,JobNo,JobType,InvoiceID,isnull(InvoiceNo,0) as InvoiceNo ,StatusID,InvoiceModeID,createddate,Minchk from (
 select INV.JobOrderID,INV.JobNo,INV.JobType,INV.InvoiceID,INV.InvoiceNo,INV.StatusID,INV.InvoiceModeID,INV.CreatedDate, row_number() over(partition by JobOrderID,JobType order by CreatedDate desc) as Minchk 
 from FFS_TBl_Invoice INV where JobType in ('AirJob','AirHouseJob')
 ) as t1
 where Minchk=1 
 )
INV on INV.JobOrderID=J.JobOrderID and INV.JobNo=J.JobNo  and INV.JobType=J.JobType
where 
INV.JobType in ('AirJob','AirHouseJob') and J.JobOrderID=2802
group by J.JobOrderID,J.JobType,J.JobNo,J.Status,AJ.Status,INV.InvoiceID,INV.InvoiceNo,INV.StatusID,INV.InvoiceModeID


Рейтинг:
1

OriginalGriff

Попробуй:

SELECT TOP 1
...
ORDER BY INV.Createddate DESC
Хотя я должен сказать, что предложение GROUP BY выглядит очень подозрительно - вы же понимаете, что оно не принесет ничего полезного, если у вас есть каждый выходной столбец, включенный в группу?


Sasiit

Существует более 1lak записей. Я выбираю только конкретную работу. так что топ-1 непригоден для использования.

OriginalGriff

Тогда вам придется гораздо подробнее объяснить, что именно вы хотите: в вашем вопросе конкретно говорится "только последняя запись", что означает "только одна запись", а ваш пример показывает только одну запись в выходных данных. Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.

Sasiit

Я получил решение, Спасибо за ответ.

Sasiit

Извините за этот оригинальный гриф.В любом случае, это моя ошибка, спасибо.