Sql 如何连接这两个表
我有两张桌子: 表“一”:Sql 如何连接这两个表,sql,sql-server-2008,Sql,Sql Server 2008,我有两张桌子: 表“一”: ServiceID, ApplicationCode, Success 1, 1, 2 1, 3, 2 2, NULL, 3 ServiceID, ApplicationCode, Failure 1, 1, 1 1, 2, 3 2, NULL, 4 3, NULL, 1 表“二”: ServiceID, ApplicationCode, Success 1, 1, 2 1, 3, 2 2, NULL, 3 ServiceID, ApplicationCode,
ServiceID, ApplicationCode, Success
1, 1, 2
1, 3, 2
2, NULL, 3
ServiceID, ApplicationCode, Failure
1, 1, 1
1, 2, 3
2, NULL, 4
3, NULL, 1
表“二”:
ServiceID, ApplicationCode, Success
1, 1, 2
1, 3, 2
2, NULL, 3
ServiceID, ApplicationCode, Failure
1, 1, 1
1, 2, 3
2, NULL, 4
3, NULL, 1
我想收到结果表:
列:
ServiceID, ApplicationCode, Success
1, 1, 2
1, 3, 2
2, NULL, 3
ServiceID, ApplicationCode, Failure
1, 1, 1
1, 2, 3
2, NULL, 4
3, NULL, 1
我正在使用SQLServer2008
我应该使用什么查询
已编辑:我希望通过ServiceID和ApplicationCode连接这两个表。
编辑2:
我尝试过的代码:
INSERT INTO #MidResult(ServiceID,ApplicationCode,SuccessCount,FailureCount)
SELECT case rtrim(ltrim(s.ServiceID)) WHEN NULL THEN f.ServiceID ELSE s.ServiceID END,s.ApplicationCode,s.SuccessCount,f.FailureCount
FROM #SuccessResult s
FULL JOIN #FailureResult f on f.ApplicationCode = s.ApplicationCode and s.ServiceID = f.ServiceID
请注意,ServiceID和ApplicationCode都应该匹配。您可以使用以下选项:
select
coalesce(t1.serviceid, t2.serviceid) serviceid,
coalesce(t1.ApplicationCode, t2.ApplicationCode) ApplicationCode,
t1.Success,
t2.failure
from table1 t1
full outer join table2 t2
on t1.ServiceID = t2.ServiceID
and isnull(t1.ApplicationCode, '') = isnull(t2.ApplicationCode, '')
order by serviceid, ApplicationCode
看
结果是:
| SERVICEID | APPLICATIONCODE | SUCCESS | FAILURE |
---------------------------------------------------
| 1 | 1 | 2 | 1 |
| 1 | 2 | (null) | 3 |
| 1 | 3 | 2 | (null) |
| 2 | (null) | 3 | 4 |
| 3 | (null) | (null) | 1 |
我曾尝试连接两个表,但我总是从一个表或另一个表中缺少一些行,因此,当询问您尝试了什么时,这意味着您应该显示到目前为止的代码及其具体问题。有时另一个表中不存在ApplicationCode,因此,结果表中将缺少该行,那么您希望如何加入它们?您不能依赖ServiceID,因为它是重复的。你说“编辑:我希望通过ServiceID和ApplicationCode连接这两个表。”那么为什么要进行向下投票呢?行“2,NULL”应该变成一行:“2,NULL,3,4”