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

时间:2012-08-17 18:25:21

标签: sql join view insert-into

我有一个查询,它有多个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     

Eeach查询包含一整套SELECTFROMWHEREORDER BY / GROUP BY语句。我需要将前三个查询(视图?)的结果加入到第四个查询根据其中的列创建的视图中。

我知道如果能够引用和连接视图,如何设置连接。然而,我不知道该怎么做才能让它们成为可能发生的格式。

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

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

1 个答案:

答案 0 :(得分:2)

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

  • 你可以按照你的方式进行。
  • 您可以使用公用表表达式将所有四个前驱查询拉入最终查询。
  • 您可以将前驱查询封装在内联表值函数中,然后将它们连接起来。
  • 您可以将前驱查询封装到视图中,然后加入它们。

根据您选择的方法,查询效率可能会有细微差别;这在某种程度上取决于你在前驱查询中所做的具体细节。