1

複数の異なる結果セットを生成する複数の select ステートメントを持つクエリがあります。基本的には、4 つの個別のクエリのセットです。ただし、これらの個別の結果を 4 番目のクエリに結合できるようにする必要があります。

私が知る限り、個別のクエリを個別のビューにして、それらがすべて単一のクエリ内に存在するようにする必要がありますが、これを行う方法がわかりません。

Microsoft SQL Server Management Studio 2010 を使用しています

クエリ 1 は、次の列を含む結果を作成します。

 AgencyID | Agency | Address | City 

クエリ 2 は、次の列で結果を作成します。

 AgentID | AgencyID | Name | Address

クエリ 3 は、次の列で結果を作成します。

 InsuredID | PolicyID | Name | Company

クエリ 4 は、次の列で結果を作成します。

 PolicyID | AgencyID | AgentID | InsuredID     

各クエリには、、、および / ステートメントの完全なSELECTセットがありますFROM。最初の 3 つのクエリ (ビュー?) の結果を、そこにある列に基づいて 4 番目のクエリによって作成されたビューに結合する必要があります。WHEREORDER BYGROUP BY

ビューを参照して結合できるようになったら、結合を設定する方法を知っています。どうすればよいかわかりませんが、それが可能な形式にすることです。

これらすべてを 1 つのテーブル ビューにまとめて、各行に対応する代理店データ、被保険者データ、および代理店データと共に保険情報が表示されるようにしたいと考えています。これは効率的または可能な方法ですか?

INSERT INTO @Agency (AgencyID, Agency, Address, City)
SELECT
FROM
WHERE

INSERT INTO @Agent (AgentID, AgencyID, Name, Address)
SELECT
FROM
WHERE

INSERT INTO @Insured (InsuredID, PolicyID, Name, Company)
SELECT
FROM
WHERE

INSERT INTO @Policy (PolicyID, AgencyID, AgentID, InsuredID)
SELECT
FROM
WHERE

SELECT *
FROM @Policy p
JOIN @Agency ay ON ay.AgencyID = p.AgencyID
JOIN @Agent at ON at.AgentID = p.AgentID
JOIN @Insured i ON i.InsuredID = p.InsuredID

それを行うためのより良い方法はありますか、それともこれが実行可能なルートのように思えますか? select、where、その他の詳細は、この特定の質問には関係ないため省略しました。

4

1 に答える 1

2

これを行うには、いくつかの方法があります。

  • あなたがレイアウトした方法でそれを行うことができます。
  • 共通テーブル式を使用して、4 つの先行クエリすべてを最終的なクエリに取り込むことができます。
  • プリカーサー クエリをインライン テーブル値関数にカプセル化し、それらを結合することができます。
  • プリカーサー クエリをビューにカプセル化してから結合することができます。

選択した方法に基づいて、クエリの効率にわずかな違いがある場合があります。これは、プリカーサー クエリで行っていることの詳細に多少依存します。

于 2012-08-17T18:30:43.533 に答える