Tsql 如何加入多对多并保持相同的总数

Tsql 如何加入多对多并保持相同的总数,tsql,join,sql-server-2012,sum,Tsql,Join,Sql Server 2012,Sum,我有两个数据集。左侧数据集具有相同的QuoteID、PolicyNumber,但可以是不同的年份、月份和PaidLoss。 第二个数据集具有不同的QuoteID、相同的PolicyNumber、不同的年份和不同的月份,也可以是多个类代码。 我需要将第一个数据集与第二个数据集合并,并保持相同的paidLoss。主要目标是每月保持相同的总支付损失。我知道这可能不太适合做生意,但这正是老板想看到的 这就是我迄今为止所尝试的: select cte1.PolicyN

我有两个数据集。左侧数据集具有相同的QuoteID、PolicyNumber,但可以是不同的年份、月份和PaidLoss。 第二个数据集具有不同的QuoteID、相同的PolicyNumber、不同的年份和不同的月份,也可以是多个类代码。 我需要将第一个数据集与第二个数据集合并,并保持相同的paidLoss。主要目标是每月保持相同的总支付损失。我知道这可能不太适合做生意,但这正是老板想看到的

这就是我迄今为止所尝试的:

select      
            cte1.PolicyNumber,
            AccidentYear,
            AccidentMonth,
            cte2.ClassCode,
    /*
        Using ROW_NUMBER() to check if it's the first record in the join and returns
        the PaidLosses value if so, otherwise it will display 0. The ORDER BY (SELECT 0) 
        is there just because I don't need the row number to be based on any explicit 
        order.
    */
            CASE
                WHEN ROW_NUMBER() OVER (PARTITION BY cte1.QuoteID, cte1.PolicyNumber ORDER BY (SELECT 0))=1 THEN cte1.PaidLosses 
                ELSE 0
            END  as PaidLosses
from        cte1 inner join cte2 on cte1.PolicyNumber=cte2.PolicyNumber AND cte1.QuoteID=cte2.QuoteID AND cte1.AccidentYear=cte2.LossYear
            AND cte1.AccidentMonth=cte2.LossMonth
但出于某种原因,它没有采取一些政策。 理想情况下,我希望看到这样的情况: 第一排已经赔钱了, 但如果同一策略的类代码重复,则QuoteID、Year和Month的值为0


我认为您还应该按
cte1.acdentYear,
cte1.acdentMonth
进行分区

CASE
WHEN ROW_NUMBER() OVER (PARTITION BY cte1.QuoteID, cte1.PolicyNumbe  cte2.LossYear, cte2.AccidentMonth ORDER BY (SELECT 0))=1 THEN cte1.PaidLosses 
ELSE 0
END  as PaidLosses.
结果将是:

QuoteId PolicyNumber    AccidentYear    AccidentMonth   ClassCode   

PaidLosses
191289  PACA1001776-0   2015    4   50228   26657
191289  PACA1001776-0   2015    4   67228   0
191289  PACA1001776-0   2015    9   50228   16718
191289  PACA1001776-0   2015    9   67228   0
191289  PACA1001776-0   2016    1   50228   3445
191289  PACA1001776-0   2016    1   67228   0
那是你需要的吗