1

我有一个查询,它有多个选择语句来生成几组不同的结果。它基本上是一组 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     

每个查询都有一整套SELECTFROMWHERE/语句ORDER BYGROUP 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

有没有更好的方法来做到这一点,或者这似乎是一条可行的路线?我省略了选择、位置和其他内容的详细信息,因为它们与这个特定问题无关。

4

1 回答 1

2

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

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

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

于 2012-08-17T18:30:43.533 回答