2
SELECT
     CASE WHEN "dbo"."ClaimDataFormat"."RELATION" = 'DAUGHTER'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'SON'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'SISTER'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'FATHER'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'MOTHER'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'WIFE'
          OR   "dbo"."ClaimDataFormat"."RELATION" = 'HUSBAND'
          THEN 'SPOUSE'
          ELSE 'SELF'
          END AS RELATION,

     sum("dbo"."ClaimDataFormat"."CLAIM_AMT") AS TOTAL_CLAIM_AMOUNT
FROM
     "dbo"."ClaimDataFormat"
GROUP BY
     "dbo"."ClaimDataFormat"."RELATION"

上述查询的结果集如下所示,但我只想要两行,第一行添加“SPOUSE”的所有值,第二行仅添加值为 1,689,292.0 的“SELF”

RELATION TOTAL_CLAIM_AMOUNT
-------------------
SPOUSE  121724.0
SPOUSE  2440297.0
SPOUSE  145586.0
SPOUSE  853361.0
SELF    1689292.0
SPOUSE  1.0
SPOUSE  373190.0
SPOUSE  1984198.0

我需要帮助才能做到这一点。请建议我该怎么做

4

1 回答 1

2

您可以像这样包装查询,外部select在同一列上应用相同的分组,您将获得所需的结果。您也可以IN在您的查询中使用运算符CASE来缩短查询。

 SELECT SUM(TOTAL_CLAIM_AMOUNT) AS TotalClaimAmount, Relation
 FROM
    (
      SELECT
         CASE WHEN "dbo"."ClaimDataFormat"."RELATION" IN ('DAUGHTER','SON','SISTER','FATHER','MOTHER','WIFE','HUSBAND')THEN 'SPOUSE'
              ELSE 'SELF'
          END AS RELATION,
          SUM("dbo"."ClaimDataFormat"."CLAIM_AMT") AS TOTAL_CLAIM_AMOUNT
     FROM
        "dbo"."ClaimDataFormat"
     GROUP BY
         "dbo"."ClaimDataFormat"."RELATION"
    )As innerData
  GROUP BY RELATION
于 2015-02-25T05:33:18.693 回答