我不知道如何简明制定问题来形容一个问题,我想解决的问题。
我有两个下表:
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
有没有对如何解决这个有什么建议?
更新:
会不会有与@ AdaTheDev的剧本任何问题,如果有一个以上的表(IDC,NUMC)加入? 在这种情况下,这将是最好的解决办法? 事情是我有他们的15加入到一个表,他们应该通过ID和分组有15个对应的numX列。
像这样的东西,应该这样做
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和美洲开发银行是空的情况下,给一个结果
全部测试脚本(在表2中添加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
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
这是你以后?
select tableA.idA as Id, tableA.numA as numA, tableB.numB as numB
from tableA
inner join tableB on tableA.Id = tableB.Id
文章来源: Joining tables on columns with different names but produce single column in result