多个连接的业务时间(db2 中的时间逻辑)
Business time with several joins (Temporal logic in db2)
我正在使用 DB2 及其特性“时间逻辑”(如果您对这个主题感兴趣 - https://www.ibm.com/developerworks/data/library/techarticle/dm-1204db2temporaldata/index.html 给出了介绍)。我有一个关于到目前为止我无法理解的问题的问题:
此示例将完美运行:
SELECT * FROM policy
FOR BUSINESS_TIME FROM '2009-01-01' TO '2011-01-01'
但是如果我想加入更多的表,我会得到语法错误的错误。并且没有关于如何做到这一点的示例(阅读:我找不到示例)。
是的,我知道如何避免这种情况 "feature",并使其与子 select 一起工作。即使在 date_from
和 date_to
之间也无济于事。因为这个BUSINESS_TIME
不等于date_to
。
在我的例子中,是这样的:
where'2009-01-01' <='2009-01-01'<'2011-01-01'
不起作用。
Update在DB2中应该是这样的:
where '2009-01-01'<='2009-01-01'
and '2009-01-01'<'2011-01-01'
非常感谢!
加入也有效 - 这是我在工作时间加入两个表的示例之一
SELECT u.name, u.BUSINESS_START, u.BUSINESS_END
, d.name, d.BUSINESS_START, d.BUSINESS_END
, max(u.BUSINESS_START, d.BUSINESS_START) as Result_BUSINESS_START
, min(u.BUSINESS_END, d.BUSINESS_END) as Result_BUSINESS_END
FROM Praesident_USA FOR business_time
FROM '1970-01-01' TO CURRENT DATE U
INNER JOIN KANZLER_D FOR business_time
FROM '1970-01-01' TO CURRENT DATE D
ON d.BUSINESS_START <= u.BUSINESS_END
AND d.BUSINESS_END >= u.BUSINESS_START
希望这对您的场景有所帮助。
我正在使用 DB2 及其特性“时间逻辑”(如果您对这个主题感兴趣 - https://www.ibm.com/developerworks/data/library/techarticle/dm-1204db2temporaldata/index.html 给出了介绍)。我有一个关于到目前为止我无法理解的问题的问题:
此示例将完美运行:
SELECT * FROM policy
FOR BUSINESS_TIME FROM '2009-01-01' TO '2011-01-01'
但是如果我想加入更多的表,我会得到语法错误的错误。并且没有关于如何做到这一点的示例(阅读:我找不到示例)。
是的,我知道如何避免这种情况 "feature",并使其与子 select 一起工作。即使在 date_from
和 date_to
之间也无济于事。因为这个BUSINESS_TIME
不等于date_to
。
在我的例子中,是这样的:
where'2009-01-01' <='2009-01-01'<'2011-01-01'
不起作用。
Update在DB2中应该是这样的:
where '2009-01-01'<='2009-01-01'
and '2009-01-01'<'2011-01-01'
非常感谢!
加入也有效 - 这是我在工作时间加入两个表的示例之一
SELECT u.name, u.BUSINESS_START, u.BUSINESS_END
, d.name, d.BUSINESS_START, d.BUSINESS_END
, max(u.BUSINESS_START, d.BUSINESS_START) as Result_BUSINESS_START
, min(u.BUSINESS_END, d.BUSINESS_END) as Result_BUSINESS_END
FROM Praesident_USA FOR business_time
FROM '1970-01-01' TO CURRENT DATE U
INNER JOIN KANZLER_D FOR business_time
FROM '1970-01-01' TO CURRENT DATE D
ON d.BUSINESS_START <= u.BUSINESS_END
AND d.BUSINESS_END >= u.BUSINESS_START
希望这对您的场景有所帮助。