が、私はアンピボット(または他の何か)は、より効率的かもしれないと思う、非常に遅いですが、私はクロスを使用するよりも、それ他を行う方法を見つけ出すことはできませんが適用されます。クロス適用は実行できません、アンピボット(またはその他)に変換しますか?大規模なデータセットを挿入するときにクロスが適用
CREATE TABLE LocData
(Airport varchar(5), City varchar(5), Country varchar(5))
;
INSERT INTO LocData
(Airport, City, Country)
VALUES
('LHR','LON','GB'),
('LGW','LON','GB'),
('LCY','LON','US'),
('JFK','NYC','US'),
('LGA','NYC','US'),
('EWR','NYC','US')
;
CREATE TABLE Travel
(ID int, Dep varchar(5), Arr varchar(5))
;
INSERT INTO Travel
(ID, Dep, Arr)
VALUES
(1, 'LHR','JFK'),
(2, 'LHR','EWR'),
(3, 'LGA','LGW'),
(4, 'LCY','EWR')
;
--theクエリは
select * from Travel;
select
c.*
from Travel t
join LocData dep on dep.Airport=t.Dep
join LocData arr on arr.Airport=t.Arr
cross apply
(
values
(t.ID, dep.Airport, 0, arr.Airport, 0),
(t.ID, dep.City, 1, arr.City, 1),
(t.ID, dep.Country, 2, arr.Country, 2)
) c (ID, Dep, DepType, Arr, ArrType);
あなたの質問は非常に貧弱だったので、私は無礼を書こうとしていましたが、私はフィドルリンクを見ました...私は質問にコードを入力しました。 – Shnugo
インデックス/外部キーはありますか?あなたは本当に* 3-char *空港コードをFKとして使用していますか? *が非常に遅く、*大きなデータセット*とはどういう意味ですか? – Shnugo
ありがとう@Shnugoは私が両方を提供すべきかどうか確かではなかった、将来するだろう。 – baileyswalk