每组的pgsql序列密钥

时间:2017-02-28 10:30:08

标签: sql postgresql

调查数据表(survey_data)看起来像

groupid| res_q_1| resp_q_2
-------|--------|----------
12     |    1   |61
12     |    3   |20
12     |    3   |39
12     |    3   |24
13     |    1   |53
13     |    2   |60

这里我尝试在pgsql中创建一个新的临时表

DROP TABLE IF EXISTS temp_survey_table;
CREATE TEMPORARY TABLE temp_survey_table  AS
SELECT 
    (*create temp_serial here*)
    groupid, 
    res_q_1,
    resp_q_2
 FROM survey_data

所以结果应该是

|temp_serial|groupid | res_q_1| resp_q_2
|-----------|--------|--------|---------
|          1| 12     |    1   |61
|          2|  12    |    3   |20
|          3|  12    |    3   |39
|          4|  12    |    3   |24
|          1|  13    |    1   |53
|          2|  13    |    2   |60

(* create temp_serial here *)的任何代码?

1 个答案:

答案 0 :(得分:2)

SERIAL是create sequence的快捷方式,并将其指定为默认值... 请尝试使用row_number,例如:

DROP TABLE IF EXISTS temp_survey_table;
CREATE TEMPORARY TABLE temp_survey_table  AS
SELECT 
    row_number() over(partition by groupid),
    groupid, 
    res_q_1,
    resp_q_2
 FROM survey_data