如何使用 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;
你好,我正在尝试将合并与 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;