我在SQL中有两个表,并且我需要能够基于早于或等于表A中的时间戳的表B中的时间戳进行联接。
因此,这是两个表和所需输出的一些虚假数据:
结案案例(表A)
| id | resolution | timestamp |
------------------------------------------------
| 1 | solved | 2006-10-05 11:55:44.888153 |
| 2 | closed | 2007-10-07 12:34:17.033498 |
| 3 | trashed | 2008-10-09 08:19:36.983747 |
| 4 | solved | 2010-10-13 04:28:14.348753 |
分类(表B)
| id | value | timestamp |
-------------------------------------------------
| 1 | freshman | 2006-01-01 12:02:44.888153 |
| 2 | sophomore | 2007-01-01 12:01:19.984333 |
| 3 | junior | 2008-01-01 12:02:28.746149 |
所需结果
| id | resolution | timestamp | value |
--------------------------------------------------------------
| 1 | solved | 2006-10-05 11:55:44.888153 | freshman |
| 2 | closed | 2007-10-07 12:34:17.033498 | sophomore |
| 3 | trashed | 2008-10-09 08:19:36.983747 | junior |
| 4 | solved | 2010-10-13 04:28:14.348753 | junior |
因此,我知道代码需要如下所示,我只是想不出该如何处理ON
部分JOIN
($ 1和$ 2是将要传入的变量):
SELECT case.id, case.resolution, case.timestamp, class.value
FROM closed_cases AS case
LEFT JOIN classifications AS class ON ???
WHERE case.timestamp BETWEEN $1 AND $2;
我知道我可以使用子选择,但这将在至少几千行,甚至可能更多的行上进行,我需要它真的要快。所以我希望有一个简单的子句可以做到。
如果可以更改表的结构,建议更改分类表以包括结束日期和开始日期-这样将更容易加入表。
如果没有,我建议如下:
SELECT case.id, case.resolution, case.timestamp, class.value
FROM closed_cases AS case
LEFT JOIN (select c.*,
(select min(timestamp)
from classifications c1
where c1.timestamp > c.timestamp) timeend
from classifications c) AS class
ON case.timestamp >= class.timestamp and
(case.timestamp < class.timeend or class.timeend IS NULL)
WHERE case.timestamp BETWEEN $1 AND $2;
编辑-结束日期为分类:
SELECT case.id, case.resolution, case.timestamp, class.value
FROM closed_cases AS case
LEFT JOIN classifications AS class
ON case.timestamp >= class.timestamp and case.timestamp < class.timeend
WHERE case.timestamp BETWEEN $1 AND $2;
我需要将两个数据集与CLOSE时间戳连接起来。第一个数据集是来自移动应用程序的日记数据集: 在这里: 第二个数据集是来自加速度计日志的数据集,显示移动(=INVH)或空闲(=NIVH): 在这里: 我需要根据时间戳字段之间的时间差连接两个数据帧。例如,在df1上留下join,以查看应用程序日志数据如何与实际加速度计日志一致。简单的左连接在这里不起作用,因为在大多数情况下有一个滞后时间。所以我的问题
在DynamoDB中,我有一个表,其中每条记录都有两个日期属性,
问题内容: 我有两个要结合并插入到基于三列组合的另一个表中的表。我会解释。 表M 表N 现在,这两个表必须匹配,并根据以下内容插入到 表MN 中: 所以从理论上讲,我的输出 表MN 应该是 表M 大约有140万条记录, 表N 大约有90万条记录。 我已尝试根据以下两个查询将两个表连接起来。但是执行需要花费数小时,如果我必须每天运行一次,这是不可行的。 当我只运行上述2个查询的SELECT语句时,在
问题内容: 我目前正在编写更新语句,以使可查询表保持最新状态。这两个表之间的架构相同,内容也不重要: 我的更新语句如下所示: 需要注意的两件事是:1)更新结束时没有where子句(这可能是问题所在); 2)更新后的所有记录都具有相同的值。我的意思是: 我的问题是如何解决此问题,以使表正确地将登台的“新”数据反映为正确的SQL更新? 更新 因此,我的登台数据可以恰好反映了其中的内容,为了便于讨论,它
我的架构如下所示: 这是你的小提琴 图式的快速解释:我有广告: 每个广告都有洞察力,这些洞察力告诉我们某个广告何时处于活动状态(=>ad_clicks必须>0)。 每个ad都有产品(MANY2MONE-表)。每个产品都有,它告诉我们该产品在某一天产生了多少销售额。 现在,我想获取时间范围-的所有广告,这些广告的>0(我已经做了),并计算每个广告在活动时产生了多少销售额。因此,只有当广告的ad_in
我需要连接来自两个不同表的数据,如下所示。仅使用一个sql查询就可以做到这一点吗?如果“key”和“name”在两个表上,那么它们是相同的。表1中的“状态”始终为“-”,表2中的“T”。此外,两个表上的“名称”和“comp”都匹配(例如:Name3-C和Name4-B)<我尝试过“联合”和“加入”,但还没有解决办法! 表1 表2 结果应该是。。。 提前谢谢!