Teradata CASE 和 HAVING COUNT

Teradata CASE and HAVING COUNT

我有一个tableHandset。有一些重复的 imei,我必须 select 每个 imei 都有这些要求:

  1. 找到唯一的 imei 后选择那个
  2. 当发现重复的 imei 时,如果有一个 data_capable = 'Y',请选择那个。
  3. 当发现重复的 imei 时,如果两个 data_capable = 'Y',选择一个最大(收入)
  4. 当找到重复的 imei 时,如果两个 data_capable = 'N' 然后选择一个 最大(收入)

IMEI               MSISDN        REVENUE   DATA_CAPABLE

35622200000001  4282336700001   1000        Y
35622200000001  4282336700002   2000        N
35622200000002  4282336700003   3000        Y
35622200000003  4282336700004   4000        Y
35622200000004  4282336700005   5000        Y
35622200000005  4282336700006   6000        Y
35622200000005  4282336700007   7000        Y
35622200000006  4282336700008   8000        Y
35622200000007  4282336700009   9000        N
35622200000007  4282336700010   1100        N

对于这种情况,我很难合并 CASE WHEN and HAVING COUNT(*)>1。 非常感谢大师的任何帮助

这是 ROW_NUMBER 的案例。

假设 data_capable 的选项是 YN:

select *
from tab
qualify
   row_number()
   over (partition by imei          -- for each imei
         order by data_capable desc -- 'Y' first
                  ,revenue desc     -- max(revenue) first
        ) = 1