Sql server 使用案例选择-将结果合并到单个记录中

Sql server 使用案例选择-将结果合并到单个记录中,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一个问题如下 SELECT FGB.TEMPLATE_DETAILS_REF, FGB.TEMPLATE_STRUCTURE_REF, FGB.DFEE_ELEMENT, CASE WHEN Condition = 'A' THEN SUM(FGS.Weighted) END AS CondA, CASE WHEN Condition = 'B' THEN SUM(FGS.Weighted) END AS CondB, CAS

我有一个问题如下

SELECT        
FGB.TEMPLATE_DETAILS_REF, FGB.TEMPLATE_STRUCTURE_REF, FGB.DFEE_ELEMENT, 
    CASE 
    WHEN Condition = 'A' THEN SUM(FGS.Weighted) END AS CondA, 
    CASE 
    WHEN Condition = 'B' THEN SUM(FGS.Weighted) END AS CondB, 
    CASE 
    WHEN Condition = 'C' THEN SUM(FGS.Weighted) END AS CondC, 
    CASE 
    WHEN Condition = 'D' THEN SUM(FGS.Weighted) END AS CondD
    FROM            FGBlockSummary AS FGB INNER JOIN
                             FGSurveyItem AS FGS ON FGB.TEMPLATE_DETAILS_REF = FGS.TEMPLATE_DETAILS_REF AND FGB.TEMPLATE_STRUCTURE_REF = FGS.TEMPLATE_STRUCTURE_REF AND 
                             FGB.DFEE_ELEMENT = FGS.DFEE_ELEMENT
    GROUP BY FGB.TEMPLATE_DETAILS_REF, FGB.TEMPLATE_STRUCTURE_REF, FGB.DFEE_ELEMENT, FGS.Condition
其结果如下:

  • 16 109天花板零14101.47零零零
  • 16 109上限无效无效227.68无效
  • 如何将结果合并成一行

  • 16 109天花板空14101.47 227.68空

  • 谢谢这就是你要找的吗

    我将
    SUM
    移到
    病例
    s之外,并通过从
    组中消除
    FGS.Condition
    。它会产生将
    NULL
    值更改为“0”的副作用,但这可能是可以容忍的

    SELECT
      FGB.TEMPLATE_DETAILS_REF
     ,FGB.TEMPLATE_STRUCTURE_REF
     ,FGB.DFEE_ELEMENT
     ,CondA = SUM( 
              CASE
                WHEN FGS.Condition = 'A' THEN FGS.Weighted
                ELSE 0
              END)
     ,CondB = SUM( 
              CASE
                WHEN FGS.Condition = 'B' THEN FGS.Weighted
                ELSE 0
              END)
     ,CondC = SUM( 
              CASE
                WHEN FGS.Condition = 'C' THEN FGS.Weighted
                ELSE 0
              END)
     ,CondD = SUM( 
              CASE
                WHEN FGS.Condition = 'D' THEN FGS.Weighted
                ELSE 0
              END)
    FROM
      FGBlockSummary AS FGB
    INNER JOIN
      FGSurveyItem   AS FGS
        ON
        FGB.TEMPLATE_DETAILS_REF = FGS.TEMPLATE_DETAILS_REF
          AND FGB.TEMPLATE_STRUCTURE_REF = FGS.TEMPLATE_STRUCTURE_REF
          AND FGB.DFEE_ELEMENT = FGS.DFEE_ELEMENT
    GROUP BY
      FGB.TEMPLATE_DETAILS_REF
     ,FGB.TEMPLATE_STRUCTURE_REF
     ,FGB.DFEE_ELEMENT;
    

    你没有给我们一个很好的例子,当两个字段相同但值不同时会发生什么,它将如何决定?目前,您向我们展示的是,如果它们是相同的,请保留或选择不为空的记录。每个实体最多有4条记录,这取决于“条件”为“a”、“B”、“C”或“D”。我想做的是将与每个“条件”值关联的值合并到一个结果记录中。完美的感谢和零而不是空值也很有用。头号人物!