【发布时间】:2014-10-24 16:53:59
【问题描述】:
给定表格:
score | name | time | nick
1 'A' 1 'X'
4 'A' 2 'X'
10 'A' 3 'X'
10 'A' 4 'X'
1 'A' 5 'X'
1 'B' 6 'Z'
4 'C' 7 'Z'
我想创建一个包含多列的输出,第一个是分数,其他的sum(时间)为name||'_time_'::text||nick。
原来是这样:
score | A_time_X | B_time_Z
1 6 0
4 2 0
10 7 0
1 0 6
4 0 7
每个分数的列显示 GROUP (score,name,nick) 相同时的时间总和。 nick 的其他值将显示更多列。
这可能吗?
【问题讨论】:
-
请解释“多列,第一列是分数,其他列是总和(时间)作为名称||'time'::text||nick”跨度>
-
得分第一列。然后每组(分数,名称,昵称)多一列,总和(时间)的值。列名将是:
_'time'_ 。 name 和 nick 被每个不同的组合替换。如上例。 -
结果的最后一行应该是
4 0 0,而不是4 0 7,因为源表有name = 'C'。
标签: sql postgresql multiple-columns aggregation crosstab