Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 子查询中最大值的SQL |条件查询_Sql Server_Jpa_Hibernate Criteria - Fatal编程技术网

Sql server 子查询中最大值的SQL |条件查询

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

我需要找出与表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)
     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的主键