Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按t1.datetime和MAX(t2.datetime)连接表_Sql_Join_Sql Server 2008 R2_Max - Fatal编程技术网

Sql 按t1.datetime和MAX(t2.datetime)连接表

Sql 按t1.datetime和MAX(t2.datetime)连接表,sql,join,sql-server-2008-r2,max,Sql,Join,Sql Server 2008 R2,Max,我在用datetime列连接两个表时遇到问题 我需要加入一些类似Table1.datetime>MAXTable2.datetime的内容。 我没有其他可以加入的专栏。你能帮我吗 370000行以上的表1示例: timestamp data1 data2 data3 ----------------------- ----- ----- ----- 2011-05-09 08:55:19.990 x1 w12 j3 2011-05-09 0

我在用datetime列连接两个表时遇到问题

我需要加入一些类似Table1.datetime>MAXTable2.datetime的内容。 我没有其他可以加入的专栏。你能帮我吗

370000行以上的表1示例:

timestamp                data1  data2  data3
-----------------------  -----  -----  -----
2011-05-09 08:55:19.990  x1     w12    j3
2011-05-09 08:56:19.990  x4     w22    j3
2011-05-09 08:57:19.990  x5     w23    j3
2011-05-09 08:58:19.990  x7     w25    j3
2011-05-09 08:59:19.990  x2     w19    j3
2011-05-09 09:01:19.990  x3     w18    j3
timestamp                data8
-----------------------  -----
2011-05-09 07:55:11.990  y1
2011-05-09 07:56:13.990  y9
2011-05-09 08:17:14.990  y3
2011-05-09 08:28:15.990  y8
2011-05-09 08:59:16.990  y5
2011-05-09 09:02:19.990  y6
超过2000行的表2示例:

timestamp                data1  data2  data3
-----------------------  -----  -----  -----
2011-05-09 08:55:19.990  x1     w12    j3
2011-05-09 08:56:19.990  x4     w22    j3
2011-05-09 08:57:19.990  x5     w23    j3
2011-05-09 08:58:19.990  x7     w25    j3
2011-05-09 08:59:19.990  x2     w19    j3
2011-05-09 09:01:19.990  x3     w18    j3
timestamp                data8
-----------------------  -----
2011-05-09 07:55:11.990  y1
2011-05-09 07:56:13.990  y9
2011-05-09 08:17:14.990  y3
2011-05-09 08:28:15.990  y8
2011-05-09 08:59:16.990  y5
2011-05-09 09:02:19.990  y6
因此,表1和表2中的数据应具有以下值:

timestamp                data1  data2  data3  timestamp                data8
-----------------------  -----  -----  -----  -----------------------  -----
2011-05-09 08:55:19.990  x1     w12    j3     2011-05-09 08:28:15.990  y8
2011-05-09 08:56:19.990  x4     w22    j3     2011-05-09 08:28:15.990  y8
2011-05-09 08:57:19.990  x5     w23    j3     2011-05-09 08:28:15.990  y8
2011-05-09 08:58:19.990  x7     w25    j3     2011-05-09 08:28:15.990  y8
2011-05-09 08:59:19.990  x2     w19    j3     2011-05-09 08:59:16.990  y5
2011-05-09 09:01:19.990  x3     w18    j3     2011-05-09 08:59:16.990  y5

如果我正确理解了您的问题,您需要将整个表2连接到表1的每一行,其中Table1.timestamp>MaxTable2.timestamp?下面的查询应该可以解决这个问题,但是你可能需要澄清这个问题

Select * from Table1 t1, Table2 t2
Where t1.timestamp > (select MAX(t3.timestamp) from Table2 t3)
将选项与交叉运算符和顶部运算符一起使用

SELECT *
FROM dbo.Table1 t1 CROSS APPLY (
                                SELECT TOP 1 t2.[TIMESTAMP], t2.data8
                                FROM dbo.Table2 t2
                                WHERE t2.[TIMESTAMP] < t1.[TIMESTAMP]
                                ORDER BY t2.[TIMESTAMP] DESC
                                ) o

请参见“您使用的是什么数据库系统?”的演示。MS SQL Server 2008 R2I需要将整个表1与表2.timestamp和T2连接起来。timestamp必须是表1.timestamp之前的最后一个时间戳。因此,为了简化:我从表1中得到了日期,例如2012-05-01。表2的日期为2012-01-01、2012-02-012-04-302012-05-05。选择应该加入表1=>2012-05-01=>2012-04-30这样的表2。日期2012-04-30是表1给出的日期之前的最后一个日期。