选择表1中的所有行并填充表2中的列

时间:2016-08-13 07:25:41

标签: sql-server

我有两张表如下:

表1:

ID | FName | LName  
1  | A1    | A2  
2  | B1    | B2  
3  | C1    | C2  

表2:

ID | Price | Month | T1ID  
1  | 5     | 1     | 1  
2  | 5     | 1     | 2  
3  | 5     | 2     | 3  

结果:
月份='1'

ID  | FName | LName | Price | Month | T1ID  
1   | A1    | A2    | 5     | 1     | 1  
2   | B1    | B2    | 5     | 1     | 2  
NULL| C1    | C2    | NULL  | NULL  | 3  

月份='2'

ID  | FName | LName | Price | Month | T1ID  
NULL| A1    | A2    | NULL  | NULL  | 1  
NULL| B1    | B2    | NULL  | NULL  | 2  
3   | C1    | C2    | 5     | 2     | 3  

1 个答案:

答案 0 :(得分:0)

看起来像是一个有多个连接条件的左连接:

SELECT t2.ID, t1.FName, t1.LName, t2.Price, t2.Month, t1.ID
FROM Table1 t1 
    LEFT JOIN Table2 t2 ON t1.ID = t2.T1ID AND t2.Month = '1' -- or '2'

诀窍是通过向ON子句添加附加条件来进行过滤,这有助于在连接期间过滤记录。如果您在WHERE子句中使用了条件,则会从结果中过滤掉一些记录,这不是您所期望的。