postgresql中的数据透视等价

postgresql中的数据透视等价,sql,postgresql,Sql,Postgresql,我在SQL Server中使用的是pivot,其中有以下语句: Select YR, [1] As Beginning, [2] As Inter, [3] As Advanced, [4] As AdvHigh,Campus From (Select YR, Rating, StudentId, Campus from mytable Where YR = '2014' ) As Data PIVOT (Count(Stud

我在SQL Server中使用的是
pivot
,其中有以下语句:

Select YR, [1] As Beginning, [2] As Inter, [3] As Advanced, [4] As AdvHigh,Campus
From    
    (Select YR, Rating, StudentId, Campus 
        from mytable
        Where YR = '2014'
    ) As Data
    PIVOT   (Count(StudentId)
            For Rating IN ([1], [2], [3], [4])
    ) As Pvt
现在我正在尝试用Postgresql编写相同的查询(我是Postgresql的新手)。我已经看过了tablefunc,但还不确定如何使用它


任何帮助都会很好

我不太熟悉postgresql中的
tablefunc
,但是您可以通过使用带有聚合函数的
CASE
表达式来复制
PIVOT

Select YR, 
  sum(case when ListeningProfRating = 1 then 1 else 0 end) As Begining,
  sum(case when ListeningProfRating = 2 then 1 else 0 end) As Inter,
  sum(case when ListeningProfRating = 3 then 1 else 0 end) As Advanced,
  sum(case when ListeningProfRating = 4 then 1 else 0 end) As AdvHigh
  Campus 
from mytable
Where YR = '2014' 
  AND ListeningScoreCode IN('S', 'B')
group by yr, campus

您能提供一个带有示例输入和示例输出的SQLFiddle()吗?您好,谢谢您提供的解决方案。效果很好。有没有一种方法可以在这里使用crosstab作为轴心点?@crozzfire是的,但我不熟悉这种语法-请看这个问题/答案--