我有一个表格,其中包含日期,系统,硬度,电导率,tankno列。
date system cond hard tankno 2014-01-04 HT 55.67 2.68 1 2014-01-05 HT 64.67 3.1 2 2014-01-10 HT 54.77 2.44 1 2014-01-10 HT 66.3 3.47 2 2014-01-18 HT 55.63 2.38 1 2014-01-18 HT 65.9 1.44 2 2014-01-24 HT 53.1 1.76 2 2014-01-28 HT 64.53 2.1 1
I want report like this
Date system Tank 1 cond Tank1 Hard Tank 2 cond Tank 2hard 2014-01-04 HT 55.67 2.68 NULL NULL 2014-01-05 HT NULL NULL 64.67 3.1 2014-01-10 HT 54.77 2.44 66.3 3.47 2014-01-18 HT 55.63 2.38 65.9 1.44 2014-01-24 HT NULL NULL 53.1 1.76 2014-01-28 HT 64.53 2.1 NULL NULL
I am using this sql:
select t1.date, t1.cond as tk1cond, t1.hard as tk1hard,
t2.cond as tk2cond, t2.hard as tk2hard
from systemvalue t1 left join systemavalue t2
on t1.date=t2.date
and t2.tankno='2'
and t2.system='HT'
and month(t2.date)='01'
and year(t2.date)='2014'
where t1.tankno='1' and t1.system='HT'
and month(t1.date)='01'
and year(t1.date)='2014'
但是此返回数据与可以使用tankno 1值的日期有关,如下所示:
日期系统Tank 1 cond Tank1 Hard Tank 2 cond Tank 2hard
2014年1月4日HT 55.67 2.68 NULL NULL
2014-01-10 HT 54.77 2.44 66.3 3.47
2014-01-18 HT 55.63 2.38 65.9 1.44
2014年1月28日HT 64.53 2.1 NULL NULL
如何修改sql以获取所有日期的数据
我想要日期列中的所有日期,并将其加入所有Tank 1 Vlaues和Tank 2值
最佳答案
左联接仅适用于左侧的所有值,因此,如果缺少左侧的值,结果将无任何显示。
您需要使用OUTER连接从两个岛获取值
What is the difference between "INNER JOIN" and "OUTER JOIN"?