+-----------+------------+-----------+-----------+
| Person_ID | First_Name | Last_Name | Igroup_ID |
+-----------+------------+-----------+-----------+
| 2 | Rick | Hudson | 100 |
| 2 | Rick | Hudson | 50 |
| 2 | Rick | Hudson | 28 |
| 2 | Rick | Hudson | 15 |
| 3 | John | Hardy | 150 |
| 3 | John | Hardy | 100 |
| 4 | Tom | Johnson | 200 |
| 4 | Tom | Johnson | 150 |
| 4 | Tom | Johnson | 100 |
+-----------+------------+-----------+-----------+
请参考上表使用操作 LISTAGG 背后的原因,我得到多行 Person ID 因为我每个人都与多个 Group ID 相关联,所以我想使用 LISTAGG 连接 Group ID 并隔离值。
而且由于 IGROUP 值有很多,每个人都可以关联一个值,但是我们担心前 2 个值,在屏幕截图中
当某事返回 100|50 Then 'GroupA' 当某事返回 150|100 Then 'GroupB' 当某事返回 200|150 然后 'GroupC'
(CASE LISTAGG(G.IGROUP_ID , '|') WITHIN GROUP (ORDER BY G.igroup_id)
WHEN '100|50' THEN 'GroupA'
WHEN '150|100' THEN 'GroupB'
WHEN '200|150 THEN 'GroupC'
END) AS SERVICES
但这里的问题是,如果我使用上述方式,我必须在 CASE 语句中定义所有组合
有什么办法可以使用WHEN LIKE '100|50%'
THEN GroupA