Как получить последнюю запись только на основе обновленного - PullRequest
0 голосов
/ 23 мая 2019

Как получить самую последнюю запись только на основе созданного? Есть более 1lak записей и одно и то же задание, имеющее более 100 записей. В качестве примера я взял только одно задание

JobOrderID  INVInvoiceid  INVInvoiceNo     NVStatusID INVCreateddate
----------- ------------ ------------- ---------------- ----------- ------------
2802        43877         INF220519025921   7           2019-05-22 15:16:00.000

2802        43881         NULL              1           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 

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

JobOrderID  INVInvoiceid  INVInvoiceNo     NVStatusID INVCreateddate
----------- ------------ ------------- ---------------- ----------- ------------
2802        43881         NULL              1           2019-05-22 16:29:00.000

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Добавьте в конец вашего запроса.

ORDER BY INVCreateddate DESC

Если вам нужна только одна запись.Разместите ТОП 1 после «ВЫБОР».

0 голосов
/ 23 мая 2019
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 
...