我想将IndirectFlights表合并到PriceTable。 我没有在SourceTable(IndirectFlights)中输入ID,但我还没有为它设置PK。 PriceTable的ID列是Identity(1,1)列,也是主键。
Qs1如何在“源”列中输入ID,以便它们不与目标表(PriceTable)ID冲突?我正在考虑使用一个序列,但它可能会在将来发生冲突。 Qs2我可以选择要合并的列,还是必须合并Source表中的所有列?
Target Table (PriceTable) Columns
IDAirport_ICAO_Code,Airline_ICAO_Code,Departure,Price,RouteStatus,DateRowModified
Source Table (IndirectFlights) Columns
IDAirport_ICAO_Code,Destination,Airline,Airline_ICAO_Code,RouteStatus,Connecting Airport
编辑:我刚刚运行了以下Union All语句作为使用Merge的替代方法。
Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus
From RoughworkPriceTable
Union All
Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus
From RoughworkIndirectFlights;
代码工作但我注意到ID列接受了IndirectFlights.ID中的Null值,尽管我将ID列设置为Not Null。
任何人都可以解释这个。 也有人可以通过这个Union All声明来表达我如何创建一个新的永久表。
答案 0 :(得分:0)
您可以使用
之类的内容创建新表 Select * into newTmpTable from (
Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus From RoughworkPriceTable
Union All
Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus From RoughworkIndirectFlights)
as mergedData;