我需要组值并根据组中的值分配状态。示例:
客户 | 购买 | 状态 |
---|---|---|
客户1 | 购买 1 | 状态1 |
客户1 | 购买2 | 状态2 |
客户1 | 购买3 | 状态1 |
客户2 | 购买4个 | 状态2 |
客户2 | 购买5个 | 状态3 |
客户端3 | 购买4个 | 状态1 |
客户端3 | 购买5个 | 状态4 |
按客户端分组并分配状态 IF 组中状态 1 THEN 客户端状态 = 状态 1 ELSEIF 组中状态 2 THEN 客户端状态 = 状态 2 等等。
预期结果:
客户 | 主要状态 |
---|---|
客户1 | 状态1 |
客户2 | 状态2 |
客户端3 | 状态1 |
状态 1 具有最高优先级,状态 4 - 最低优先级。
请帮忙
根据第一个表,假设 T1:
SELECT 客户端,SUBSTR (StatusGroup, 1, INSTR (StatusGroup, '-') - 1) “主要状态” FROM ( 选择客户端, LISTAGG(状态,'-') 组内(排序依据 解码(状态, '状态 1', 1, '状态 2', 2, '状态 3', 3, 4)) 状态组 从T1出发 按客户分组)