我有以下情况:
两个表,结构相同。
t1 --> oDate datetime, oVal int<br>
t2 --> oDate datetime, oVal int<br>
让我们说数据是:
T1:
---------------------
oDate oVal
---------------------
2016-07-30 30
2016-07-31 40
2016-08-01 35
2016-08-02 50
T2:
--------------------
oDate oVal
---------------------
2016-07-30 56
2016-07-31 34
自“2016-08-01”以来, t2为空,字段为oDate
和oVal
。
我希望得到以下结果:
---------------------------
oDate oVal1 oVal2
---------------------------
2016-07-30 30 56
2016-07-31 40 34
2016-08-01 35 35
2016-08-02 50 50
因为表格t2
自“2016-08-01”后为空,oVal2
的值是oVal1
的副本。
如何使用SQL Query执行此操作? 谢谢。
答案 0 :(得分:3)
使用left join
和case
,如下所示:
SELECT T1.oDate, T1.oVal oVal1, CASE WHEN T2.oVal IS NULL THEN T1.oVal ELSE T2.oVal END oVal2
FROM T1
LEFT JOIN T2 ON T1.oDate=T2.oDate
看一下demo:
WITH T1 AS
(
SELECT * FROM (VALUES
(CONVERT(datetime, '2016-07-30'), 30),
(CONVERT(datetime, '2016-07-31'), 40),
(CONVERT(datetime, '2016-08-01'), 35),
(CONVERT(datetime, '2016-08-02'), 50)) T(oDate, oVal)
), T2 AS
(
SELECT * FROM (VALUES
(CONVERT(datetime, '2016-07-30'), 56),
(CONVERT(datetime, '2016-07-31'), 34)) T(oDate, oVal)
)
SELECT T1.oDate, T1.oVal oVal1, CASE WHEN T2.oVal IS NULL THEN T1.oVal ELSE T2.oVal END oVal2
FROM T1
LEFT JOIN T2 ON T1.oDate=T2.oDate
答案 1 :(得分:0)
SEL a.odate,a.oval,聚结(b.oval,a.oval) 从t1 a 离开加入 t2 b 在a.odate = b.odate