【发布时间】:2013-12-19 22:57:53
【问题描述】:
我是 PostgreSQL 新手。
id | customer_id | form_id | field_id | field_name | form_submission_id | value |
---+-------------+---------+----------+------------+--------------------+--------------+
1 | 2 | 7 | c313 | Program | 1 | 2013 |
2 | 2 | 7 | c313 | Program | 2 | PIP |
3 | 2 | 7 | c313 | Program | 3 | CIP |
4 | 2 | 7 | c343 | Broker | 1 | broker test |
5 | 2 | 7 | c343 | Broker | 2 | broker test1 |
6 | 2 | 7 | c343 | Broker | 3 | broker test2 |
7 | 2 | 7 | c339 | Class | 1 | Class test |
8 | 2 | 7 | c339 | Class | 2 | Class test1 |
9 | 2 | 7 | c339 | Class | 3 | Class test2 |
我想要这样的记录
customer_id form_id Program Broker Class form_submission_id
2 7 2013 broker test Class test 1
2 7 PIP broker test1 Class test1 1
2 7 CIP broker test2 Class test3 1
field_name 值将是动态的,而不是固定值。
我已经尝试过了,但是遇到了类似“错误:返回和 sql 元组描述不兼容”的错误
select * from crosstab (
'select Distinct customer_id ,form_id , field_name from form_submissions_reports '
)
as newtable (
customer_id integer,form_id integer,field_id1 varchar,field_id2 varchar,field_id3 varchar
);
但重要的是,字段名称是动态的。
【问题讨论】:
-
我用谷歌搜索但没有得到答复
-
是的,没错。相关的贡献是第一个结果,相关的 StackOverflow dup 紧随其后:stackoverflow.com/questions/3002499/postgresql-crosstab-query
-
但它有固定的状态值。我没有 field_name 的固定值
-
然后编辑您的问题并解释您尝试了什么以及为什么该问题中的内容不起作用。
-
强烈建议您在数据库之外的应用程序中进行交叉制表。这样更快更容易
标签: postgresql pivot crosstab