我有一个表格,其中包含日期,系统,硬度,电导率,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"?

09-12 16:53