【问题标题】:Select max date that the value needs reference field in another table选择值需要在另一个表中引用字段的最大日期
【发布时间】:2015-02-18 01:21:59
【问题描述】:

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

必须使用名为 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

这个 XN1ID 需要来自表 t_cluster 的参考值。这些是 t_cluster 的记录。

ID       NAME       DESC 
----------------------------
223       A         Admin
734       B         Customer
735       C         Customer
736       D         Customer

我想要的结果如下。

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%';

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

【问题讨论】:

  • @EatAPeach 感谢编辑...

标签: sql oracle join


【解决方案1】:

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

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%';

【讨论】:

    【解决方案2】:

    只需通过子查询和FULL OUTER JOINLeft join (我从您想要的输出中看到)

    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
    

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2014-04-10
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多