-2

私は2つのテーブルを持っています:

テーブル「1」:

ServiceID, ApplicationCode, Success
1, 1, 2
1, 3, 2
2, NULL, 3

テーブル「2」:

ServiceID, ApplicationCode, Failure
1, 1, 1
1, 2, 3
2, NULL, 4
3, NULL, 1

その結果テーブルを受け取りたい:

列:

ServiceID, ApplicationCode, Success, Failure
1, 1, 2, 1
1, 3, 2, NULL
2, NULL, 3, 4
1, 2, NULL, 3
3, NULL, NULL, 1

SQL Server 2008 を使用しています。

どのクエリを使用すればよいですか?

編集: ServiceID と ApplicationCode で 2 つのテーブルを結合しようとしています。

EDITED 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
4

2 に答える 2

3

以下を使用できる場合があります。

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

SQL Fiddle with Demoを参照してください。

結果は次のとおりです。

| SERVICEID | APPLICATIONCODE | SUCCESS | FAILURE |
---------------------------------------------------
|         1 |               1 |       2 |       1 |
|         1 |               2 |  (null) |       3 |
|         1 |               3 |       2 |  (null) |
|         2 |          (null) |       3 |       4 |
|         3 |          (null) |  (null) |       1 |
于 2013-01-14T11:05:29.693 に答える
-1
Select one.ServiceID, one.ApplicationCode, one.Success, two.Failure
From TableOne one , TableTwo two
where one.ServiceID = two.ServiceID
and one.ApplicationCode = two.ApplicationCode

ServiceID と ApplicationCode の両方が一致する必要があることに注意してください。

于 2013-01-14T11:01:05.157 に答える