簡體   English   中英

Teradata CASE和HAVING COUNT

[英]Teradata CASE and HAVING COUNT

我有一個桌子Handset 有一些重復的imei,我必須只選擇一個imei,每個都有這些要求:

  1. 當發現獨特的imei然后選擇那個
  2. 當找到重復的imei時,如果一個data_capable ='Y',則選擇那個。
  3. 當發現重復的imei時,如果data_capable ='Y',則選擇一個最大(收入)
  4. 找到重復的imei時,如果data_capable ='N',則選擇一個max(收益)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM