Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 在另一个表中选择“值需要引用的最大日期”字段_Sql_Oracle_Join - Fatal编程技术网

Sql 在另一个表中选择“值需要引用的最大日期”字段

Sql 在另一个表中选择“值需要引用的最大日期”字段,sql,oracle,join,Sql,Oracle,Join,我对如何连接两个表感到困惑 必须使用名为t_logging的第一个表来选择最大日期。这是我的代码 select d.* from ( select ID,RFID, XD1,XD2,XN1,XN2,XS1,XS2, rank() over(partition by ID order by XD1 desc) seq from t_logging where id LIKE '%73%' ) d where seq = 1; 这就是结果 ID XD1 X

我对如何连接两个表感到困惑

必须使用名为t_logging的第一个表来选择最大日期。这是我的代码

select d.* from
(
  select ID,RFID, XD1,XD2,XN1,XN2,XS1,XS2,
    rank() over(partition by ID order by XD1 desc) seq
  from t_logging where id LIKE '%73%'
) d
where seq = 1;
这就是结果

ID     XD1          XN1 
-----------------------
734    17-DEC-14    223
735    18-DEC-14    223
该XN1和ID需要表t_cluster中的参考值。这些是t_集群的记录

我希望结果如下

ID       NAME     DESC         XD1
-----------------------------------------------
223       A       Admin        null
734       B       Customer     17-DEC-14
735       C       Customer     18-DEC-14
736       D       Customer     null
我尝试了以下查询:

SELECT a.id,desc,d.* FROM t_cluster_odp a,(
  select d.* from
  (
    select ID, XD1,XN1,
      rank() over(partition by ID order by XD1 desc) seq
    from t_logging where id LIKE '%73%'
  ) d
  where seq = 1
) d
WHERE a.id LIKE '%73%';

但是它没有给我正确的结果。如何连接这两个表?

只需通过子查询和完全外部连接或左连接即可,我从您所需的输出中看到了它们

select 
 a.id,a.desc,d.id,d.xd1
from 
FROM t_cluster_odp a
LEFT JOIN
  (select *
   from
    (
      select ID,XD1,
        rank() over(partition by ID order by XD1 desc) seq
      from t_logging where id LIKE '%73%'
    )
   where seq = 1
  ) d
ON a.ID = d.ID

我还没有测试过这个,但你应该可以这样做

SELECT
 t_cluster.id,
 t_cluster.name,
 t_cluster.desc,
 t_logging_max.xd1
FROM
 t_cluster
 LEFT OUTER JOIN
 (
  SELECT id, MAX(xd1) AS xd1
  FROM t_logging
  GROUP BY id
 ) t_logging_max ON t_cluster.id = t_logging_max.id
WHERE 
 t_cluster.id LIKE '%73%';

@EatAPeach感谢您编辑。。。
SELECT
 t_cluster.id,
 t_cluster.name,
 t_cluster.desc,
 t_logging_max.xd1
FROM
 t_cluster
 LEFT OUTER JOIN
 (
  SELECT id, MAX(xd1) AS xd1
  FROM t_logging
  GROUP BY id
 ) t_logging_max ON t_cluster.id = t_logging_max.id
WHERE 
 t_cluster.id LIKE '%73%';