2014-06-19 142 views
0

我想在postgresql中創建一個小詞彙表。 到現在爲止,我有一些「垂直值」Postgresql垂直到水平,一個表

General_id Sing_id  Synonim  Language 
1   1    yes    en-GB 
2   1    ja    de-DE 
3   1    oui    fr-FR 
4   2    no    en-GB 
5   2    nein   de-DE 
6   2    niet   ru-RU 


SELECT 
    General_id, 
    Sing_id, 
    Synonim, 
    Language 
FROM table1.base 

,但我想有像這樣的表:

Sing_id en_GB de_DE fr_FR ru_RU ... 

    1   yes  ja  oui 
    2   no  nein   niet ... 

你想給我如何實現一個提示這個?

回答

2

你在說'pivoting'。

看到這個職位:Pivoting in Postgres

來自實例後:

SELECT * 
FROM crosstab(
    'SELECT 
    a date, 
    b.desc AS os, 
    (random() * 10000 + 1)::int AS value 
    FROM generate_series((now() - ''100 days''::interval)::date, now()::date, ''1 DAY''::interval) a, 
      (SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux'']) AS DESC) b ORDER BY 1,2 
    ','SELECT unnest(ARRAY[''OSX'', ''Windows'', ''Linux''])' 
) 
AS ct(date date, OSX int, Windows int, Linux int); 
+0

感謝。我將嘗試交叉表功能。我也發現了這個:http://www.postgresql.org/docs/9.1/static/tablefunc.html – user2958297