【发布时间】:2013-08-22 06:31:09
【问题描述】:
我有两个表,其中包含要合并并按日期排序的事件,我需要一个结果值,我可以将记录分组以进行报告 - 在本例中为 code2
CREATE TABLE #tbl1 (code1 INT, codeDate DATETIME, code2 INT)
CREATE TABLE #tbl2 (code1 INT, codeDate DATETIME, code2 INT )
INSERT INTO #tbl1 VALUES( 1, '01 jan 2013 12:00:00', 123)
INSERT INTO #tbl1 VALUES( 2, '01 jan 2013 14:00:00', 123)
INSERT INTO #tbl1 VALUES( 1, '01 jan 2013 15:00:00', 234)
INSERT INTO #tbl1 VALUES( 2, '01 jan 2013 18:00:00', 234)
INSERT INTO #tbl2 VALUES( 10, '01 jan 2013 12:10:00', 0)
INSERT INTO #tbl2 VALUES( 20, '01 jan 2013 13:20:00', 0)
INSERT INTO #tbl2 VALUES( 10, '01 jan 2013 15:10:00', 0)
INSERT INTO #tbl2 VALUES( 20, '01 jan 2013 16:20:00', 0)
SELECT * FROM #tbl1 UNION SELECT * FROM #tbl2 ORDER BY CODEDATE
返回
code1 codeDate code2
1 2013-01-01 12:00:00.000 123
10 2013-01-01 12:10:00.000 0
20 2013-01-01 13:20:00.000 0
2 2013-01-01 14:00:00.000 123
1 2013-01-01 15:00:00.000 234
10 2013-01-01 15:10:00.000 0
20 2013-01-01 16:20:00.000 0
2 2013-01-01 18:00:00.000 234
我希望更新 code2 列中的值,以便位于 tbl1 中日期值之间的 tbl2 记录具有来自 tbl1 的 code2 值。 (结果中的第 2、3、6 和 7 行)例如:
code1 codeDate code2
1 2013-01-01 12:00:00.000 123
10 2013-01-01 12:10:00.000 123
20 2013-01-01 13:20:00.000 123
2 2013-01-01 14:00:00.000 123
1 2013-01-01 15:00:00.000 234
10 2013-01-01 15:10:00.000 234
20 2013-01-01 16:20:00.000 234
2 2013-01-01 18:00:00.000 234
UNION 可以做到这一点,还是我需要不同的方法?
【问题讨论】:
-
请添加您正在使用的数据库正在询问 sql 问题,oracle/postgess/mysql/mssql 之间存在很多差异 ...
-
根据语法标记为 MS SQL Server
标签: sql sql-server sql-server-2012