我尝试了很多解决方案,但似乎没有任何效果。我正在尝试返回项目的MAX状态日期。如果该项目在同一日期有多个项目,那么我需要返回MAX ID。到目前为止,我已经尝试过这个:
SELECT PRJSTAT_ID, PRJSTAT_PRJA_ID, PRJSTAT_STATUS, PRJSTAT_DATE
From Project_Status
JOIN
(SELECT MAX(PRJSTAT_PRJA_ID) as MaxID, MAX(PRJSTAT_DATE) as MaxDate
FROM Project_Status
Group by PRJSTAT_PRJA_ID)
On
PRJSTAT_PRJA_ID = MaxID and PRJSTAT_DATE = MaxDate
Order by PRJSTAT_PRJA_ID
返回以下内容:
我为PRJSTAT_PRJA_ID获取了多条记录,但我只想返回MAX PRJSTAT_ID的行。有什么想法吗?
答案 0 :(得分:0)
取出子查询上ID的MAX:
SELECT PRJSTAT_ID, PRJSTAT_PRJA_ID, PRJSTAT_STATUS, PRJSTAT_DATE
From Project_Status
JOIN
(SELECT PRJSTAT_PRJA_ID as ID, MAX(PRJSTAT_DATE) as MaxDate
FROM Project_Status
Group by PRJSTAT_PRJA_ID)
On
PRJSTAT_PRJA_ID = ID and PRJSTAT_DATE = MaxDate
Order by PRJSTAT_PRJA_ID
答案 1 :(得分:0)
或删除加入的需要:
private void Form1_Load(object sender, EventArgs e)
{
maind p = new maind();
p.Nom = txtnom.Text;
p.Prenom = txtprenom.Text;
sonep boi = new sonep();
boi.Insert(p);
}
答案 2 :(得分:0)
你的问题是关系。您希望记录的最大日期为PRJSTAT_PRJA_ID
,如果是平局,则记录的ID最高。对每组记录进行排名并且仅保留最佳记录的最简单方法是ROW_NUMBER
:
select prjstat_id, prjstat_prja_id, prjstat_status, prjstat_date
from
(
select
project_status.*,
row_number() over (partition by prjstat_prja_id
order by prjstat_date desc, prjstat_id desc) as rn
from project_status
)
where rn = 1
order by prjstat_prja_id;