SQL:在一组行中查找非数字值

问题描述 投票:0回答:1

我需要组值并根据组中的值分配状态。示例:

客户 购买 状态
客户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 - 最低优先级。

请帮忙

sql google-bigquery
1个回答
0
投票

根据第一个表,假设 T1:

SELECT 客户端,SUBSTR (StatusGroup, 1, INSTR (StatusGroup, '-') - 1) “主要状态” FROM ( 选择客户端, LISTAGG(状态,'-') 组内(排序依据 解码(状态, '状态 1', 1, '状态 2', 2, '状态 3', 3, 4)) 状态组 从T1出发 按客户分组)

© www.soinside.com 2019 - 2024. All rights reserved.