如何加入一对多并保持相同的总金额

时间:2016-11-11 20:30:54

标签: tsql join reporting-services sum

我有一行表A,其中包含策略#和QuoteID的总保费。 enter image description here

我需要将它加入到表B中,该表具有许多具有相同Policy#和QuoteID但具有不同WeightCode和ClassCode的行。

enter image description here

如何加入这两个表,以便我只能保留表A中的一个(WP)? 因为稍后,当我在SSRS中求和(WP)时,它会给我错误的数字。

让我说我想要的东西只有一个WP = 16630而休息是0:

enter image description here

1 个答案:

答案 0 :(得分:1)

我同意这些评论,看起来你正试图解决错误的问题。如果您正在使用SSRS,那么您可以拥有多个数据集,您可以在报告的不同部分使用这些数据集。您将第一个数据集设为TableA,第二个数据集为TableB。我相信这可能是你最好的选择。

但是如果你真的想在一个查询中使用该数据集,那么应该这样做:

SELECT 
    b.QuoteID,
    b.PolicyNumber,
    b.WeightClass,
    b.SecondaryLiabFactor,
    b.ClassCode,
    CASE 
        WHEN ROW_NUMBER() OVER(PARTITION BY a.QuoteID ORDER BY (SELECT 0)) = 1 THEN a.WP
        ELSE 0 
    END,
    a.YearNum,
    a.MonthNum
FROM TableA AS a
    INNER JOIN TableB AS b ON a.QuoteID = b.QuoteID

它使用ROW_NUMBER()检查它是否是连接中的第一条记录,如果是,则返回WP值,否则显示0ORDER BY (SELECT 0)只是因为您不需要基于任何显式订单的行号。