[MSSQL] 找出2个table的相同栏位,把资料union起来

把2个table的资料union起来,但2个table很相似,却有些栏位差异.
怎么快速的找出共同栏位(来做union)呢?

环璄:SQL SERVER 2008

先建立2个table,有共同栏位,也各有一个不同的栏位:UDT/UTS

CREATE TABLE CUST1(ID INT,DT INT,UPD INT--这个不同.)CREATE TABLE CUST2(ID INT,DT INT,UTS INT--这个不同.)

取出栏位,等等做比较

SELECT distinct    TABLE_NAME,COLUMN_NAME INTO #AFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME ='CUST1' AND TABLE_CATALOG='dbname'SELECT distinct      TABLE_NAME,COLUMN_NAME INTO #BFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME ='CUST2' AND TABLE_CATALOG='dbname'

比较异同,可以清楚看出,哪些栏位A有,B没有.

SELECT * FROM #A A FULL OUTER   JOIN #B B ON A.COLUMN_NAME = B.COLUMN_NAME  

取出相同的,来select 做union
这样union,不用怕栏位数不同,也不用怕栏位不一样.

DECLARE @RET VARCHAR(MAX)=''SELECT @RET = A.COLUMN_NAME+','+@RET  FROM #A A INNER JOIN  #B B ON A.COLUMN_NAME = B.COLUMN_NAME  SELECT @RET --result--ID,DT,
SELECT ID,DT FROM CUST1UNION SELECT ID,DT FROM CUST2

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章