我想创建像这样的东西
输入数据表
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
非常感谢任何帮助。 感谢
答案 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;