pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SQL - 聯合兩個表,每個表都有幾個唯一的列

SQL - union two tables, each having a few unique columns(SQL - 聯合兩個表,每個表都有幾個唯一的列)
本文介紹了SQL - 聯合兩個表,每個表都有幾個唯一的列的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

有兩組數據(兩張表)用于患者記錄,一組是 1999-2003,另一組是 2004-2009.每個都有 >100 列;Table_A 有 ~8 個獨特的列,Table_B ~ 25 個獨特的列(相互比較).我的目標是:

Have two sets of data (two tables) for patient records, one 1999-2003, the other 2004-2009. Each has >100 columns; Table_A has ~8 unique columns, Table_B ~ 25 unique columns (Compared to each other). My goal is:

  1. 包含 1999-2009 年所有數據的單個表格
  2. 對于一個表中不在另一個表中的行,只需將該列的值設為 NULL.例如如果表A有Diagnostic_Category_12而Table_B沒有,則該值將是表A中的原始值,而表B中為NULL

我見過一種手動執行此操作的方法:合并具有不同列數的兩個表

I've seen a method for doing this manually: Unioning Two Tables With Different Number Of Columns

但是,此數據集中的列太多,無法逐一輸入 - 我只想自動創建列并根據需要插入 NULL 值.

However there are far too many columns in this data set to type each one in - I'd like to just auto-create columns and insert NULL values as needed.

我使用的是 SQL Server 2008R2.

I am using SQL Server 2008R2.

推薦答案

更聰明地工作,而不是更努力.

Work smarter, not harder.

我建議您通過查詢您的架構來構建一些 SQL...這樣您就不會因為手工編寫而遺漏任何東西.您可以像這樣生成腳本(只需將 @tableName1@tableName2 值替換為適當的表名):

I'd recommend that you build up some SQL by querying your schema... this way you don't miss anything by writing things by hand. You can generate the script like so (just replace @tableName1 and @tableName2 values with the appropriate table names):

declare
 @tableName1 sysname = 'myfirsttablename'
,@tableName2 sysname = 'mysecondtablename'
,@select varchar(max) = 'select';

declare @columns table
(
     Id int identity(1,1)
    ,ColumName nvarchar(128)
    ,ExistsInTable1 bit
    ,ExistsInTable2 bit
);

-- Get a column listing with flags for their existence in each table
insert @columns
select distinct
 quotename(c.Column_Name)
,iif(c2.Table_Name is null, 0, 1)
,iif(c3.Table_Name is null, 0, 1)
from Information_Schema.Columns as c
    left join Information_Schema.Columns as c2
    on c2.Column_Name = c.Column_Name
    and c2.Table_Name = @tableName1
    left join Information_Schema.Columns as c3
    on c3.Column_Name = c.Column_Name
    and c3.Table_Name = @tableName2 
where c.Table_Name in (@tableName1, @tableName2);

-- Build the select statement for the 1sttable (using null where the column is absent)
select
 @select += char(10) + iif(c.Id = 1, ' ', ',') 
+ iif(c.ExistsInTable1 = 1, c.ColumName, 'null') + ' as ' + c.ColumName
from @columns as c
order by c.Id;

set @select += '
from ' + quotename(@tableName1) + '
union all
select';

-- Build the select statement for the 2ndtable (using null where the column is absent)
select
 @select += char(10) + iif(c.Id = 1, ' ', ',') 
+ iif(c.ExistsInTable2 = 1, c.ColumName, 'null') + ' as ' + c.ColumName
from @columns as c
order by c.Id;

set @select += '
from ' + quotename(@tableName2);

-- Print or execute your sql.
print(@select); -- or exec(@select);

生成 SQL 后,我建議您:

Once you've generated your SQL, I'd recommend that you:

  1. 驗證您的結果并根據需要調整您的查詢.
  2. 將最終的 SQL 放在存儲過程中,而不是為每個請求即時生成它.

這篇關于SQL - 聯合兩個表,每個表都有幾個唯一的列的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 永嘉县奥阳陶瓷阀门有限公司| 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 阜阳在线-阜阳综合门户| 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 元拓建材集团官方网站| 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 河南中专学校|职高|技校招生-河南中职中专网 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | ZHZ8耐压测试仪-上海胜绪电气有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 山东柳店新能源科技有限公司| 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 |