Sql 在另一个表中选择“值需要引用的最大日期”字段
我对如何连接两个表感到困惑 必须使用名为t_logging的第一个表来选择最大日期。这是我的代码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
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%';