加入来自两个不同表格的两列
我在加入两个不同表格的两列时遇到了问题。加入来自两个不同表格的两列
方案是:我有一个表A有11列,另一个表B有6列。
在这两个表中都存在一个列名称SAMPLE1。但是,来自第一个表A的SAMPLE2和来自第二个表B的ABC具有相同的值,但具有不同的列名。与SAMPLE3和DEF相同。现在我想将这些列加入到一个列(由两个表中的数据组成)中,其余列也应该出现在最终表中。
实施例:
表A
SAMPLE1 SAMPLE2 SAMPLE3 .........SAMPLE 11 (Total 11 columns in this table)
US 75.2 US1_US NULL
INDIA 71 I3_INDIA NULL
UK 1851.23 UK1_UK NULL
表B
SAMPLE1 ABC DEF............. XYZ (Total 6 columns in this table)
CHINA 123.2 C1_CHINA 2
JAPAN 1.1 J1_JAPAN 2
GERMANY 10.2314 G1_GERMANY 2
SINGAPORE 100.22 S1_SINGAPORE 2
现在我想看到这样的输出:
SomeTable
SAMPLE1 SOMENAME1 SOMENAME2..SAPMLE 11 ABC DEF ..... SOMENAME3
US 75.2 US1_US NULL NULL NULL NULL
INDIA 71 I3_INDIA NULL NULL NULL NULL
UK 1851.23 UK1_UK NULL NULL NULL NULL
CHINA 123.2 C1_CHINA NULL NULL NULL 2
JAPAN 1.1 J1_JAPAN NULL NULL NULL 2
GERMANY 10.2314 G1_GERMANY NULL NULL NULL 2
SINGAPORE 100.22 S1_SINGAPORE NULL NULL NULL 2
简而言之:
SELECT (SAMPLE1(来自表A)+ SAMPLE1(来自表B))AS SAMPLE1, (SAMPLE2 + ABC)AS SOMENAME1, (样本3 + DEF)AS SOMENAME2, A.SAMPLE4,A.SAMPLE5,..., B.GHI,B.JKL,... (A.SAMPLE11 + B.XYZ)AS SOMENAME3
我用工会但它不起作用。
select SAMPLE1,SAMPLE2,SAMPLE3,...,SAMPLE 11 from TABLE A
UNION
SELECT SAMPLE1, ABC, DEF, ...., XYZ FROM TABLE B
现在我得到一个错误:
Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
我用联合,合并,全外连接(所有的建议或以下的答案)
请帮我在写作代码。其实,我需要在select语句中使用的代码。也可以用临时表或case语句等
感谢, Shashra
你可能寻找一个join
,如:
select a.sample1
, a.sample2
, b.abc
, b.def
... etc ...
from TableA as a
full outer join
TableB as b
where a.sample1 = b.sample1
加入使用FULL OUTER两个表(保留来自任何一个表的数据都不存在于其他表中),然后使用COALESCE从无论哪个表中获取公共SAMPLE1列。
SELECT COALESCE(A.SAMPLE1, B.SAMPLE1) SAMPLE1,
A.SAMPLE2,
A.SAMPLE3,
...
A.SAMPLE11,
B.ABC,
B.DEF,
...
B.XYZ
FROM table1 A FULL OUTER JOIN table2 B on A.SAMPLE1 = B.SAMPLE1
它的工作,但给我百万条记录。我想它在这种情况下使用交叉连接。 – Shahsra 2011-04-19 15:51:55
尝试此它可能有用
表1包含5列
select col1,col2...col5 from table1
表2含有3个柱
选择COL1,COL2,从表1
查询
选择COL1,COL2,COL3,COL4,从表1 COL5 工会 选择COL1,COL2,从表1 COL3, '', ''
感谢您回复我,但不工作。 – Shahsra 2011-04-19 15:18:25
COL3但是这只会从左表中得到所有数据,这意味着我现在不想要的表A.我想要表A和表B中的所有列,但表A和表B中的唯一列(sample1)应合并到一个列中。 – Shahsra 2011-04-18 19:51:09
@Shahsra:这是一个[完整的外连接](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html),回答编辑 – Andomar 2011-04-18 20:11:18