sql - PostgreSQL 中的数据透视表

标签 sql sql-server postgresql pivot

我正在尝试找到一种在 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/

相关文章:

php - INSERT IGNORE 上的主键自动递增

sql - 如何使用 SQL 在不同系统之间匹配人员?

mysql - SQL - 如果相同的记录不在表 Y 中,则从表 X 中删除记录

postgresql - 我可以在 FOR 循环中使用 EXCEPTION 来强制继续出错吗?

java - 制作简单的 Esper 平均查询

php - 如何将 PDO 用于特定于数据库的功能?

SQL Server : error could not find type in assembly during dll trigger creation

sql-server - 不清楚我需要哪种类型的锁来避免在唯一字段上重复插入

sql - 如何从 .t​​sv 文件的特定列中获取数据到 Postgres 数组列中?正则表达式是正确的工具,还是我应该寻找另一种方法?

postgresql - UWSGI Flask SQLAlchemy 间歇性 PostgreSQL 错误,错误为 "WARNING: there is already a transaction in progress"