代码之家  ›  专栏  ›  技术社区  ›  SANDEEP

预期的结果没有得到满足

  •  0
  • SANDEEP  · 技术社区  · 5 年前

    我有这样的数据:

    enter image description here

    enter image description here

    疑问是

      SELECT AttendeeID,[Quantity1],[PROD1],[Quantity2],[PROD2],[Quantity3],[PROD3] FROM
      (SELECT * ,
      row_number() over(partition by  AttendeeID order by AttendeeID)rn
      from #ProductTestingwithPosition2) TT
      PIVOT
      (MAX(product) for ProductPosition in ([PROD1],[PROD2],[PROD3])) AS Tab2
      PIVOT
      (sum(Quantity) for QuantityPosition in ([Quantity1],[Quantity2],[Quantity3])) AS Tab3
    

    我得到以下输出:

    enter image description here

    0 回复  |  直到 5 年前
        1
  •  0
  •   David Faizulaev    5 年前

    只需使用条件聚合:

    SELECT AttendeeID,
           MAX(CASE WHEN ProductPosition = 'PROD1' THEN product END) as prod1,
           MAX(CASE WHEN QuantityPosition = 'QUANTITY1' THEN quantity END) as quantity1,
           MAX(CASE WHEN ProductPosition = 'PROD2' THEN product END) as prod2,
           MAX(CASE WHEN QuantityPosition = 'QUANTITY2' THEN quantity END) as quantity2,
           MAX(CASE WHEN ProductPosition = 'PROD3' THEN product END) as prod3,
           MAX(CASE WHEN QuantityPosition = 'QUANTITY3' THEN quantity END) as quantity3
    FROM (SELECT ptp.* ,
                 row_number() over (partition by  AttendeeID, ProductPosition order by AttendeeID) as seqnum
          FROM #ProductTestingwithPosition2 ptp
         ) ptp
    GROUP BY AttendeeID, seqnum;
    

    PIVOT