【发布时间】:2021-07-07 17:18:37
【问题描述】:
假设我有一个如下所示的配置单元表:
|ID |CODE |AMT |NEW AMT|
|---|---------------|-----|-------|
|1 |['a','b',,,] |10 | 50 |
|2 |[,,,'a','b'] |20 | 70 |
|3 |[,'c','d','e',]|30 | 20 |
|4 |['p','q',,,] |40 | 20 |
代码列是数组数据类型。它可以有 5 个值,这些值由 ETLjob 填充。这些值以逗号分隔。 我需要在满足以下条件的情况下找到 AMT 列的聚合值:
- 如果代码具有值“a”、“b”,则该 id 的数量值应为零。
- 如果代码有值'c'、'd'、'e',那么金额中的值应替换为值 那是在新的amt。
- 如果不符合上述任一条件,则该值应与amt中的值相同。 在此之后,可以取 amt 的总和。所以对于上面给出的表格,sum(amt) 应该是 60。
我一直在努力解决这个问题,因为我是 hql/sql 的新手。 我曾尝试使用 case 语句进行总结,但失败了。 感谢您的任何意见!
【问题讨论】: