PostgreSQL:动态创建结果列

时间:2011-05-02 13:16:24

标签: postgresql

我想在PostgreSQL查询中“动态”创建结果列。我有这些表:

CREATE SEQUENCE users_id;
CREATE TABLE users (
  id INT PRIMARY KEY NOT NULL DEFAULT NEXTVAL('users_id'),
  name VARCHAR(128) NOT NULL
);

CREATE SEQUENCE quota_rules_id;
CREATE TABLE quota_rules (
  id INT PRIMARY KEY NOT NULL DEFAULT NEXTVAL('quota_rules_id'),
  user_id INT REFERENCES users(id),
  rule VARCHAR(255) NOT NULL
);
CREATE INDEX user_id_index ON quota_rules(user_id);

INSERT INTO users (name) VALUES ('myname'); -- id=1
INSERT INTO quota_rules (user_id, rule) VALUES (1, 'a');
INSERT INTO quota_rules (user_id, rule) VALUES (1, 'b');
INSERT INTO quota_rules (user_id, rule) VALUES (1, 'c');

并且想要一个返回此(1行)的查询:

SELECT ............ user_id = 1;
name   | quota_rule | quota_rule2 | quota_rule3
myname | a          | b           | c

1 个答案:

答案 0 :(得分:1)

查看tablefunc模块的crosstab功能