2017-01-20 84 views
0

我需要帮助查询的两个表成为表多值插入单个表

第一个表,Tbl_Project:

|ID  | Category | Freq_Project| 
|-------|---------- |-------------| 
|12001 | x_GM | 1   | 
|12001 | x_PP | 1   | 
|12001 | x_RI | 1   | 
|12001 | x_SS | 3   | 

第二个表,Tbl_Activity:

|ID  | Category | Freq_Activity| 
|-------|---------- |--------------| 
|12001 | x_GM |4    | 
|12001 | x_PP |3    | 
|12001 | x_SA |2    | 
|12001 | x_RI |2    | 

而且,我想结果看起来像这样

|ID  | Category | Freq_Activity | Freq_Project| 
|-------|---------- |---------------|-------------| 
|12001 | x_GM | 4   | 1   | 
|12001 | x_PP | 3   | 1   | 
|12001 | x_SA | 2   | **Null** | 
|12001 | x_RI | 2   | 1   | 
|12001 | x_SS | **Null** | 3   | 

我应该怎么做这个查询?

+4

结果由简单的全加入生产。尝试学习一些基础知识。 –

+0

全连接只对单列有效。 – Daleman

回答

0

您可以使用下面的代码,结果插入目标表。

Insert INTO ResultTable(ID,Category,Freq_Activity,Freq_Project,Tbl_Project) 
Select ISNULL(P.ID,A.ID),ISNULL(P.Category,A.Category),A.Freq_Activity,P.Freq_Project,Tbl_Project 
from Tbl_Project P 
FULL OUTER JOIN Tbl_Activity A 
ON P.ID=A.ID 
AND P.Category = A.Category 
+0

是的,终于有效了。 thx的 – Daleman

+0

请upvote答案@ mas-tidar –

0

一个完整的加盟看起来像这样

SELECT ISNULL(P.ID,A.ID),ISNULL(P.Category,A.Category),P.Freq_Projeckt,A.Freq_activity 
FROM Tbl_Project P 
FULL OUTER JOIN Tbl_Activity A 
ON A.ID=P.ID AND A.Category=P.Category 
+0

关闭。添加两个coalesce。 – jarlh

+0

是的,终于,它有效。 THX的。 – Daleman

0

使用联盟:你想

 SELECT distinct ID,Category,max(Freq_Activity)Freq_Activity, 
     max(Freq_Project)Freq_Project from 
     (
     SELECT ID,Category,Freq_Project,null 'Freq_Activity' 
     FROM Tbl_Project TP 
     union 
     SELECT ID,Category,null 'Freq_Project',Freq_Activity 
     FROM Tbl_Activity TP 
     )a 
     group by ID,Category