如何使用 coalesce 与 pivot

How to use coalesce with pivot

你好,我正在尝试将合并与 Pivot 结合使用,这样我就可以用零替换 NULLS。这是我拥有的:

     SELECT * FROM ( SELECT MovieTitle,AwardResultDesc, COALESCE(COUNT(p.AwardResultID),'0') AS T
     FROM tblMovie t1
            INNER JOIN tblAwardDetail p
              ON p.MovieID = t1.MovieID
            INNER JOIN tblAwardResult c
              ON c.AwardResultID = p.AwardResultID
    GROUP BY MovieTitle, AwardResultDesc,p.AwardResultID)

    PIVOT
    (
        max(T) FOR AwardResultDesc IN ('Won' AS "Won",'Nominated' AS "Nominated")
    ) 
    ORDER BY MovieTitle;

我的 Pivot 似乎出于某种原因忽略了我的合并,有什么建议吗?

透视操作本质上涉及聚合函数,因此无需预先聚合您的数据,但是,您确实需要确保要透视的数据足够完整。此处与 tblMovie 的外部连接确保每部电影都被 returned,无论它是否有任何奖励细节。如果您不想 return 计算既没有赢得也没有收到提名的电影,那么使用内部连接代替外部连接:

WITH dta AS (
 SELECT MovieTitle
      , AwardResultDesc
   FROM tblAwardResult ar
   JOIN tblAwardDetail ad
     ON ad.AwardResultID = ar.AwardResultID
  RIGHT JOIN tblMovie m
     ON m.MovieID = ad.MovieID
)
 SELECT *
   FROM dta
   PIVOT( count(*)
     FOR AwardResultDesc IN( 'Won' AS "Won"
                           , 'Nominated' AS "Nominated" ) )
  ORDER BY MovieTitle;