Currently browsing tag

pivot table

PostgreSQL与交叉表查询

PostgreSQL提供了一个tablefunc 模块,内置了多个函数,其中就有crosstab(交叉表,又叫行转列,或者长表转宽表),具体使用参见PostgreSQL文档(中文,英文)。 如果不清楚生成的宽表有多少列,或者列太多,手工敲很容易吃力不讨好,那么可以借助这个函数(pivotcode)来简化工作,

但这个函数,有如下的缺点, 如果返回的列有空格,需要自己手工修改 可能会有大量的Null值,而不是0 返回的是一个SQL,你需要copy出来后自己再执行(虽然也可以改进下,直接生成表) 下面这个plpython函数,pivotmytable,可以很好地解决上面的问题,python 2和python3(只需讲函数里的plpythonu替换为plpython3u即可)均支持,