我正在尝试找到一种在 Postgres 中进行数据透视的方法,但我无法使用它,因此我正在尝试寻找另一种方法。我发现以下网站解释了 SQL Server 中的数据透视表,在示例 1 中正是我想要做的。 http://sqlhints.com/2014/03/10/pivot-and-unpivot-in-sql-server/
例子是:
CREATE TABLE CourseSales(Course VARCHAR(50),Year INT,Earning MONEY);
INSERT INTO CourseSales VALUES('.NET',2012,10000);
INSERT INTO CourseSales VALUES('Java',2012,20000);
INSERT INTO CourseSales VALUES('.NET',2012,5000);
INSERT INTO CourseSales VALUES('.NET',2013,48000);
INSERT INTO CourseSales VALUES('Java',2013,30000);
使用数据透视函数查询如下:
SELECT *FROM CourseSales
PIVOT(SUM(Earning)
FOR Course IN ([.NET], Java)) AS PVTTable;
我想在 postgresql 中做同样的事情,但使用像上面那样的动态方式。
最佳答案
不幸的是,我找不到使用 postgresql 来旋转我的表并以我需要的形式得到结果的方法,但我尝试在 R 上进行>,我发现它更容易。
我将我的 postgres 数据库与 R 连接起来,然后我使用 reshape 包在我的表中执行一个数据透视表。
对于任何想使用我的方法的人来说,这就是我所做的。
首先将 R 连接到数据库。
library(RPostgreSQL)
#create driver
dDriver <- dbDriver("PostgreSQL")
#connect to the server
conn <- dbConnect(dDriver, user="user", password="mypassword", dbname="postgres")
然后使用 reshape 包
library(reshape)
获取表格
rs_CourseSales <- dbSendQuery(conn, 'SELECT * FROM CourseSales;')
dbRows_CourseSales <- fetch(rs_CourseSales, -1)
枢轴:
pivot_CourseSales<-(cast(dbRows_CourseSales, Course ~ Year))
我发现这个例子非常有用: http://www.r-bloggers.com/pivot-tables-in-r/
关于sql - PostgreSQL 中的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31275583/