查询从2个表中获取记录而忽略额外记录

时间:2016-10-13 00:56:14

标签: sql oracle plsql oracle11g plsqldeveloper

我有2张格式低于

的表格
TableA                   TableB
Aid                      Bid  Month      value
1                        1    October    10
2                        1    November   11
3                        1    December   12
4                        2    November   13
5                        2    December   14 
                         3    September  15
                         3    October    16
                         4    December   17
                         5    September  18

使用以下查询

select Aid,Month,value from TableA join TableB on 
Aid=Bid where Month = 'December'

我将得到以下结果集

Aid    Month      Value
1      December   12
2      December   14
4      December   17

但我需要以下结果集

Aid       Month      Value
1         December   12
2         December   14
3         null       null
4         December   17
5         null       null

我的意图是我们需要退货,如果出价是在几个月内,那么我们只需要返回12月份的记录,如果出价不是在12月份,那么我们只需要显示该出价的单一空记录。 / p>

最后我们只需要12月份的记录,如果没有12月份的记录,则返回空记录。

请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在寻找LEFT JOIN而不是INNER JOIN

SELECT Aid,
       Month,
       value
FROM   TableA
       LEFT JOIN TableB
              ON Aid = Bid
                 AND Month = 'December' 

注意:此外,您需要将过滤器移至ON条件,因为我们使用LEFT JOIN且过滤列来自{{1表。