Sql server 子查询中最大值的SQL |条件查询
我需要找出与表2中的行对应的行,该行为下面的查询提供了单行输出。 我将为此查询编写一个JPA条件查询。 我可以从子查询中获取maxdate,但不能获取与表2的这个最大值对应的确切行Sql server 子查询中最大值的SQL |条件查询,sql-server,jpa,hibernate-criteria,Sql Server,Jpa,Hibernate Criteria,我需要找出与表2中的行对应的行,该行为下面的查询提供了单行输出。 我将为此查询编写一个JPA条件查询。 我可以从子查询中获取maxdate,但不能获取与表2的这个最大值对应的确切行 SELECT table2.ER AS col_0_0_, table1.CR AS col_1_0_ FROM table1 table1 CROSS JOIN table2 table2 WHERE table2.date= (SELECT max(table2i.date) FR
SELECT table2.ER AS col_0_0_,
table1.CR AS col_1_0_
FROM table1 table1 CROSS
JOIN table2 table2
WHERE table2.date=
(SELECT max(table2i.date)
FROM table3 table3 CROSS
JOIN table2 table2i
WHERE table2i.id=table2.id
AND table2i.FC=?
AND table2i.TC=?
AND table2i.TCOB=?
AND table2i.FCOB=?
AND table2i.TC=table1.id
AND table2i.RT=?
AND table2i.RTOB=?
AND table3.id=?
AND table2i.date<=table3.CD)
要将加入限制为一行,请使用id加入,而不是在日期加入:
WHERE table2.id=(
SELECT TOP 1 table2i.id
FROM table2 table2i
CROSS JOIN table3
WHERE ...
ORDER BY date DESC
)
ORDER BY date DESC强制它选择具有最高日期值的行,但将其限制为只有一行top 1。使用以下方法解决了此问题:
SELECT table2.ER AS col_0_0_,
table1.CP AS col_1_0_
FROM CV table1 CROSS
JOIN ER_VIEW table2
WHERE table2.FCI=?
AND table2.TCI=?
AND table2.TCOB=?
AND table2.FCOB=?
AND table2.TCI=table1.id
AND table2.RTI=?
AND table2.RTOB=?
AND table2.date=
(SELECT max(table2i.date)
FROM DATE_VIEW table3 CROSS
JOIN ER_VIEW table2i
WHERE table2i.FCI=?
AND table2i.TCI=?
AND table2i.TCOB=?
AND table2i.FCOB=?
AND table2i.RTI=?
AND table2i.RTOB=?
AND table3.id=?
AND table2i.date<=table3.CD)
表2的主键是什么?@TabAlleman cloumn id是表2的主键