如何添加一列来显示两列中具有相同值的总行数,并且已经连接了多个表。在所有连接和 where 语句之后,我最终得到一个包含以下列的表:
产品 | 保单编号 | 行号 | 背书名称
表中有更多列,但这些是我需要参考的。从产品到保单编号存在一对多关系,从保单编号到行号存在一对多关系,从行号到背书或没有匹配关系可能存在一对多关系。
这是查询现在的样子:
Select pd.ProductName AS Product
,p.PolicyNumber AS Policy
,l.LineNumber AS Line
,e.EndorsementName AS Endorsement
FROM Lines l
INNER JOIN Policies p On p.PolicyID = l.PolicyID
LEFT OUTER JOIN Endorsements e on e.EndorsementID = l.EndorsementID
INNER JOIN Product pd on pd.ProductID = p.ProductID
结果表看起来像这样
Product Policy Line Endorsement
CH 8001 1 A
CH 8001 2 A
CH 8001 3 A
CH 8001 3 B
CH 8002 1 D
CH 8002 2 D
CH 8002 3 A
PP 9001 1 NULL
PP 9001 2 NULL
PP 9002 1 A
PP 9002 2 A
PP 9002 2 B
我需要做的是计算每条政策线的背书数量。在上面的示例中,我会看到对于产品 CH,具有多个背书的唯一行项目是策略 8001 - 第 3 行。对于产品 PP,唯一具有多个背书的行项目是策略 9002 - 第 2 行。
我想要的第一件事是一个新列,它显示每一行的计数,显示该行的相同 Policy 和 Line 值的出现总数。该表将如下所示:
Product Policy Line Endorsement Line Endorsement Count
CH 8001 1 A 1
CH 8001 2 A 1
CH 8001 3 A 2
CH 8001 3 B 2
CH 8002 1 D 1
CH 8002 2 D 1
CH 8002 3 A 1
PP 9001 1 A 1
PP 9001 2 A 1
PP 9002 1 A 1
PP 9002 2 A 2
PP 9002 2 B 2
在我成功实现此计数后,我想要一个单独的查询,该查询仅返回包含没有任何具有多个背书的行的策略的行,因此在这种情况下,策略 8001 和 9002 不会出现。
我已经尝试过在不同的帖子中看到的各种不同的东西,并适应了我的需求,但还没有找到适用于这个特定示例的解决方案GROUP BY
。HAVING
请记住,我也已经有很多WHERE
陈述和一些订购依据。
编辑: 我正在使用 Microsoft SQL Server Management Studio 2010 来执行这些查询
谢谢!