每列Teradata中的独特计数

时间:2016-07-05 13:44:10

标签: sql teradata

我有一个由以下

组成的数据集
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功能但是会感激任何提示

2 个答案:

答案 0 :(得分:1)

您可以使用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中执行条件逻辑。

答案 1 :(得分:1)

没有RANK,但是ROW_NUMBER:

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