基于多个规则合并记录的SQL

基于多个规则合并记录的SQL,sql,merge,rules,Sql,Merge,Rules,下表是数据 AccountID PolicyNumber State Policy_Expiration_Dt VehicleTypeCode ----------------------------------------------------------------------------------------------- 80102 100 CA 21-12-2017 MC 80102 101 CA 21-12-2017 TR 80102 102 CA 21-12-2017 PP

下表是数据

AccountID PolicyNumber State Policy_Expiration_Dt VehicleTypeCode
-----------------------------------------------------------------------------------------------
80102 100 CA 21-12-2017 MC
80102 101 CA 21-12-2017 TR
80102   102 CA 21-12-2017 PP
80103 104 IL 14-12-2017 SO
80103 105 IL 14-12-2017 PP
规则是:

  • 对于帐户,合并具有相同到期日期的策略
  • 对于帐户,合并具有相同状态的策略
  • 选择每个帐户上要合并的最新策略
  • 合并策略,具有以下车辆类型 A.MC&TR(如果一个策略有MC,另一个策略有TR,则合并) BPP(PP不能与任何其他类型合并) CSO(SO不能与任何其他类型合并)
  • 输出应该是

    AccountID PolicyNumber State Policy_Expiration_Dt VehicleTypeCode
    -----------------------------------------------------------------------------------------------
    80102 101 CA 21-12-2017 MC
    80102 102 CA 21-12-2017 PP
    80103 104 IL 14-12-2017 SO
    80103 105 IL 14-12-2017 PP
    

    试着这样做:

    --------- CREATING EXAMPLE
    CREATE TABLE #Something (
        AccountID INT
        ,PolicyNumber INT
        ,[State] CHAR(2)
        ,Policy_Expiration_Dt DATE
        ,VehicleTypeCode CHAR(2)
        )
    
    INSERT INTO #Something
    SELECT 80102,100,'CA','12-21-2017','MC'
    UNION ALL SELECT 80102,101,'CA','12-21-2017','TR'
    UNION ALL SELECT 80102,102,'CA','12-21-2017','PP'
    UNION ALL SELECT 80103,104,'IL','12-14-2017','SO'
    UNION ALL SELECT 80103,105,'IL','12-14-2017','PP'
    ---------END
    
    SELECT a.AccountID
        ,a.Policy_Expiration_Dt
        ,a.[state]
        ,a.VehicleTypeCode
    FROM (
        SELECT AccountID
            ,Policy_Expiration_Dt
            ,[state]
            ,CASE 
                WHEN VehicleTypeCode = 'TR'
                    THEN 'MC'
                ELSE VehicleTypeCode
                END AS 'VehicleTypeCode'
        FROM #Something
        ) a
    GROUP BY a.AccountID
        ,a.Policy_Expiration_Dt
        ,a.[state]
        ,a.VehicleTypeCode
    

    请向我们展示您尝试过的内容以及尝试后出现的任何错误。