与SQL表

与SQL表

问题描述:

回转轴我有一个表:与SQL表

product asset count 
foo  x  1 
bar  x  0 
foo  y  2 
bar  y  1 

这是一个简化版本。有大约80个资产和几百个产品。

是否有可能用SQL将此表变成类似这样的东西?

product asset x asset y 
foo   1   2 
bar   0   1 

铭记这个数据来自三个表,productsassetsassets_products

+0

这可能吗?绝对是。 [你有什么尝试?](http://whathaveyoutried.com) – 2013-02-25 17:26:54

你想要做什么是crosstab

要做到这一点,你可以使用tablefunc contrib,和下面的查询:

SELECT * FROM crosstab(
    'SELECT product, asset, count FROM <your_table> ORDER BY 1, 2') 
    AS (product text, asset_x int, asset_y int); 
+0

这里的问题是,我希望资产类型列由数据驱动。 – 2013-02-26 10:59:56

+0

@NeilMiddleton,所以唯一的解决方案似乎是动态生成查询,或者甚至在应用程序中动态地显示结果(看起来更好),因为PostgreSQL总是需要关于查询返回的列的信息。 – MatheusOl 2013-02-27 12:01:29