簡體   English   中英

在SQL中獲取表中每一行的最大日期

[英]Get max date for each line in a table in SQL

我編輯了答案,所以我的問題的解決方案是:

select  DISTINCT e.Cod_proiect
     , p.Descriere
     , p.Stare
     , p.ClientService
     , e.Data
  from ExpPoz as e 
  join Proiecte as p 
    on e.Cod_proiect=p.Cod_proiect 
             join ( 
                     select cod_proiect, max(data) maxDt 
                     from ExpPoz
                     group by cod_proiect 
                  ) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data and p.Stare='I'

這將產生以下錯誤:子查詢返回了多個值,我試圖獲取具有最大日期的每一行。

我具有以下表結構:

a    date1
a    date2
a    date3
b    date4
b    date5

輸出應該是,假設date3和date5是最舊/最大的:

a   date3
b   date5

提前致謝。

這應該可以解決問題:

select  e.Cod_proiect
      , p.Descriere
      , p.Stare
      , p.ClientService
from ExpPoz as e join Proiecte as p on e.Cod_proiect=p.Cod_proiect 
                 join ( 
                         select cod_proiect, max(data) maxDt 
                         from ExpPoz
                         group by cod_proiect 
                      ) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data
where p.Stare='I'

請注意,您寫的方式joins是很老,它是更好,更清楚,如果你使用現代化的join風格。 在此查詢中,我選擇了您需要的所有內容,並根據cod_proiect的最新記錄加入了一次。

您可以嘗試以下方法:

SELECT cod_proiect,
       MAX(data)
FROM
(
  SELECT DISTINCT
         ep.cod_proiect,
         ep.data
  FROM   ExpPoz   ep
  JOIN   Proiecte pr
    ON   ep.cod_proiect = pr.cod_proiect
   AND   pr.stare = 'I'
)
GROUP BY cod_proiect;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM