编写一个sql来透视表

时间:2017-10-18 17:43:23

标签: mysql sql pivot-table

我想创建像这样的东西

输入数据表

word

请参阅,您必须为所有fee_name和金额创建组。所以这里会有3个小组。 1类似于客户1和2的时间表,第二组类似于客户3,第三组类似于客户4和5的时间表。将此组命名为

输出1应该看起来像

if count2 >= len(word):
    break

第二个输出表应将这些组映射到客户ID。 所以第二个输出应该看起来像

customer_id fee_name    amount
1   a   1
1   b   3.25
1   c   1.75
1   d   2
1   e   0
2   a   1
2   b   3.25
2   c   1.75
2   d   2
2   e   0
3   a   1
3   b   3.25
3   c   1.75
3   d   3.5
3   e   0
4   a   1
4   b   3.25
4   c   1.75
4   d   3.5
4   f   1
5   a   1
5   b   3.25
5   c   1.75
5   d   3.5
5   f   1

非常感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:0)

SELECT x.*
     , y.customer_id
     , CASE WHEN @prev = x.fee_schedule THEN @i:=@i ELSE @i:=@i+1 END i
     , @prev:=x.fee_schedule 
  FROM 
     ( SELECT DISTINCT GROUP_CONCAT(amount ORDER BY fee_name) fee_schedule FROM my_table GROUP BY customer_id ) x
  JOIN 
     ( SELECT customer_id, GROUP_CONCAT(amount ORDER BY fee_name) fee_schedule FROM my_table GROUP BY customer_id ) y
    ON y.fee_schedule = x.fee_schedule
  JOIN
     ( SELECT @prev:=null, @i:=0 ) vars
 ORDER 
    BY y.fee_schedule
     , y.customer_id;