Sql 如何将多个视图合并到一个视图中

Sql 如何将多个视图合并到一个视图中,sql,join,view,insert-into,Sql,Join,View,Insert Into,我有一个查询,它有多个select语句来生成多个不同的结果集。它基本上是一组4个独立的查询。不过,我需要做的是将这些单独的结果合并到第四个查询中 据我所知,我需要将单独的查询转换为单独的视图,以便它们都存在于单个查询中,但我不确定如何实现这一点 我正在使用Microsoft SQL Server Management Studio 2010 查询1创建具有以下列的结果: AgencyID | Agency | Address | City 查询2使用以下列创建结果: AgentID |

我有一个查询,它有多个select语句来生成多个不同的结果集。它基本上是一组4个独立的查询。不过,我需要做的是将这些单独的结果合并到第四个查询中

据我所知,我需要将单独的查询转换为单独的视图,以便它们都存在于单个查询中,但我不确定如何实现这一点

我正在使用Microsoft SQL Server Management Studio 2010

查询1创建具有以下列的结果:

 AgencyID | Agency | Address | City 
查询2使用以下列创建结果:

 AgentID | AgencyID | Name | Address
 InsuredID | PolicyID | Name | Company
 PolicyID | AgencyID | AgentID | InsuredID     
查询3使用以下列创建结果:

 AgentID | AgencyID | Name | Address
 InsuredID | PolicyID | Name | Company
 PolicyID | AgencyID | AgentID | InsuredID     
查询4使用以下列创建结果:

 AgentID | AgencyID | Name | Address
 InsuredID | PolicyID | Name | Company
 PolicyID | AgencyID | AgentID | InsuredID     
每个查询都有一整套
SELECT
FROM
WHERE
ORDER BY
/
groupby
语句。我需要将前三个查询(视图?)的结果连接到第四个查询根据其中的列创建的视图中

我知道如何设置连接,一旦我有了能够被引用和连接的视图。然而,我不知道怎么做,就是将它们转换成一种可能发生这种情况的格式

我想将所有这些放在一个表视图中,以便每一行都显示保单信息以及相应的代理数据、投保数据和代理数据。这是一种有效甚至可能的方法吗

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和其他内容的细节,因为它们与这个特定问题无关。

有几种不同的方法可以做到这一点

  • 你可以按你的计划去做
  • 您可以使用公共表表达式将所有四个前置查询拉入最终查询
  • 您可以将前置查询封装在内联表值函数中,然后连接它们
  • 您可以将前置查询封装到视图中,然后将它们连接起来

根据您选择的方法,查询效率可能存在细微差异;这在某种程度上取决于您在Preducer查询中所做的具体操作。

好的,我发现我需要声明表,以便按照我在顶部列出的布局工作。