1

我有两个表,其中包含要合并并按日期排序的事件,并且我需要结果中的一个值,我可以将记录分组以进行报告 - 在这种情况下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 记录具有code2来自 tbl1 的值。(结果中的第 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还是我需要不同的方法?

4

1 回答 1

1

试试这个

update #tbl2
set code2 = t1.code
from
    #tbl2 t2
        inner join
    (

        select 
            t1s.codeDate start,
            t1f.codeDate finish,
            t1s.code2 code
         from #tbl1 t1s 
            inner join #tbl1 t1f 
                on t1s.code2 = t1f.code2
        where t1s.code1=1
        and t1f.code1 = 2
    ) t1
        on t2.codeDate between t1.start and t1.finish

 SELECT * FROM #tbl1 UNION SELECT * FROM  #tbl2  ORDER BY CODEDATE

但实际上,您的数据结构需要整理(这是上述大部分查询尝试做的事情)

于 2013-08-20T09:29:37.313 回答