Teradata 中每列的唯一计数

Unique Counts in Teradata per column

我有一个包含以下内容的数据集

ID     SubID
1        1
1        2
2        1
3        1

我想要第三列,基本上标记第一个 ID,并且忽略任何后续相同的 ID 本质上,有人(最终用户)想要保留详细信息,但也想在 excel

中总结唯一 ID
ID     SubID  ident
1        1      1
1        2      0 
2        1      1
3        1      1 

我想我可以在这里使用 rank 函数,但希望得到任何提示

您可以使用 row_number():

select t.*,
       (case when row_number() over (partition by id order by subid) = 1
             then 1 else 0
        end) as ident
from t;

鉴于您的示例数据,这个更简单的版本可以工作:

select t.*, (case when subid = 1 then 1 else 0 end) as ident
from t;

如果您的所有数据都是如此,那么可能甚至不需要额外的列。用户可以使用sumif()countif()来做Excel中的条件逻辑。

没有排名,但是 ROW_NUMBER:

select ID, SubID, 
   case when ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SubID) = 1
        then 1 
        else 0
   end
from tab