2011-05-02 7 views
0

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

당신을 감사합니다 tablefunc 모듈의 crosstab 기능을! 내가 본 모든 예제는 다음과 같습니다. SELECT * FROM crosstab ('..') AS (field1, field2, field3); 동적으로 오른쪽을 만들 수 있습니까? 예 : quota_rules에 5 개의 행이 있다면 (name, quota_rule, quota_rule2, quota_rule3, quota_rule4, quota_rule5)로 끝납니다. – cnubidu

관련 문제