【问题标题】:Get rows from table of last 5 days in IBM DB2 by joining another table通过加入另一个表从 IBM DB2 中最近 5 天的表中获取行
【发布时间】:2017-09-24 15:34:11
【问题描述】:

我在 DB2 中有两个表。

table1
----
sidpk                 pid
--------------------------
24gsr3               xyz
67sfr9               xyz
67sts8               xyz

table2
-------------------------
sid                 date
--------------------------
24gsr3              2017-09-24
67sfr9              2017-09-23
67sts8              2017-09-15
.
.
and so on

我正在尝试从 table2 获取从今天开始 5 天前创建的所有可用行。

在上述情况下,我希望它应该返回 24gsr3, 67sfr9

我的查询中缺少什么?

请找到它。

SELECT a.sidpk from table1 a
LEFT JOIN
table2 b
ON a.sidpk= b.sid
WHERE a.pid='xyz' AND b.date>= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND 
b.date<= CURDATE()
ORDER BY b.date DESC 

【问题讨论】:

  • 哪个操作系统?你得到所有行还是错误?尝试当前日期 - 5 天而不是 date_sub
  • @MichaelTiefenbacher,我正在使用微软。但它与操作系统有什么关系呢?
  • 你为什么不直接使用 INNER JOIN 呢?我认为您不是故意使用 LEFT JOIN。
  • @AbdullahDibas,你能试试它执行那个查询吗?
  • @Aliy 我已经在第一条评论中做了:尝试当前日期 - 5 天而不是 date_sub

标签: sql db2


【解决方案1】:

这应该可行

SELECT a.sidpk from table1 a
  LEFT JOIN table2 b
    ON a.sidpk= b.sid
 WHERE a.pid='xyz' 
   AND b.date >= current date - 5 days
   AND b.date <= current date
 ORDER BY b.date DESC 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多