SQL重新格式化/更改表的视图,将重复的内容作为列

时间:2015-10-15 19:02:28

标签: python sql postgresql flask

大家好日子!

所以,我老实说搜索所有的网络,但我想我不知道在哪里看。

我的问题是: 我有一张桌子

|some_date   |keyword|position|
-------------------------------
|'2015-09-27'|key1   |10      |
|'2015-10-10'|key1   |15      |
|'2015-09-27'|key2   |5       |
|'2015-10-10'|key2   |0       |

我需要看起来像这样:

|keyword |'2015-09-27'|'2015-10-10'|
-----------------------------------
|key1    |10          |15          |
|key2    |5           |0           |

我现在实际上也有表2,并将其用于可视化,但我不喜欢,如果我将以这种方式存储数据,表格看起来很难看。

另外,对于表格2,我无法轻松获取列名称,这也是一件令人伤心的事。

任何想法我怎么能得到这个?也许我需要两张表有一些关系?我完全坚持这个。建筑学的决定也会很好。

我在该表中有超过100个关键字,在表2中,现在有超过600行数据,而在日期列中只有3个uniq日期。我在烧瓶中制作应用程序,所以如果你知道如何在表格2中的html表格中可视化表格1,那将是一个很好的帮助!

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以使用tablefunc扩展名中的crosstab()功能。

create extension if not exists tablefunc;

select * from crosstab ($ct$
    select keyword, some_date, position
    from some_table
    order by 1, 2
    $ct$)
ct (keyword text, "2015-09-27" int, "2015-10-10" int);

 keyword | 2015-09-27 | 2015-10-10
---------+------------+------------
 key1    |         10 |         15
 key2    |          5 |          0
(2 rows)