1

解決したい問題を説明するための質問を簡潔に定式化する方法がわかりません。
次の2つのテーブルがあります。
Table 1

[idA] [numA]
 NULL   8
 1      10
 2      15
 3      16

Table 2

[idB] [numB]
 2      14
 3      30
 4      32

さて、次の結果を生成するために T-Sql クエリを作成する方法がわかりません。

[id] [numA] [numB]
NULL  8      0
1     10     0
2     15     14
3     16     30
4     0      32

これを解決する方法について何か提案はありますか?

アップデート:


結合するテーブル (idC、numC) がもう 1 つある場合、@AdaTheDev のスクリプトに問題はありますか? その場合、最善の解決策は何でしょうか?問題は、それらのうちの 15 個を 1 つのテーブルに結合し、id でグループ化し、対応する numX 列を 15 個持つ必要があることです。

4

3 に答える 3

3

このようなものは、それを行う必要があります

SELECT ISNULL(t1.idA, t2.idB) AS id, 
    ISNULL(t1.numA, 0) AS numA, 
    ISNULL(t2.NumB, 0) AS numB
FROM table1 t1
    FULL OUTER JOIN table2 t2 ON t1.idA = t2.idB OR t1.ida IS NULL AND t2.idb IS NULL

更新
メモ結合に OR 条件を追加して、idA と idB が NULL の場合を処理し、単一の結果を得ました。

完全なテスト スクリプト (table2 に NULL id レコードを追加):

DECLARE @Table1 TABLE (ida integer, numA INTEGER)
DECLARE @Table2 TABLE (idb integer, numb INTEGER)

INSERT @Table1 ([ida], [numA])
VALUES (NULL, 8), (1, 10), (2, 15), (3, 16)

INSERT @Table2 ([idb], [numb])
VALUES (NULL, 9), (2, 14), (3, 30), (4, 32)

SELECT ISNULL(t1.idA, t2.idB) AS id, 
    ISNULL(t1.numA, 0) AS numA, 
    ISNULL(t2.NumB, 0) AS numB
FROM @table1 t1
    FULL OUTER JOIN @table2 t2 ON t1.idA = t2.idB OR t1.ida IS NULL AND t2.idb IS NULL
于 2012-05-11T10:55:41.923 に答える
1
DECLARE @table1 AS TABLE (idA INT, numA INT)
DECLARE @table2 AS TABLE (idB INT, numB INT)

INSERT INTO @table1
VALUES 
(NULL, 8),
(1, 10),
(2, 15),
(3, 16)

INSERT INTO @table2
VALUES
(2, 14),
(3, 30),
(4, 32)


SELECT COALESCE(ida, idb) AS id, ISNULL(numa, 0) AS numa, ISNULL(numb, 0) AS numb
FROM @table1
FULL OUTER JOIN @table2 ON ida = idb
于 2012-05-11T10:57:35.257 に答える
0

これはあなたが求めているものですか?

select tableA.idA as Id, tableA.numA as numA, tableB.numB as numB
from tableA
inner join tableB on tableA.Id = tableB.Id
于 2012-05-11T10:54:47.520 に答える