Sql 每列以Teradata为单位的唯一计数

Sql 每列以Teradata为单位的唯一计数,sql,teradata,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 我怀疑我可以在这里

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

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
函数,但如果有任何提示,我将不胜感激。

您可以使用
行数()来执行此操作。

根据您的示例数据,此更简单的版本可以工作:

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

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

您可以使用
行数()执行此操作。

根据您的示例数据,此更简单的版本可以工作:

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

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

无秩,但有行号:

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

没有等级,但有一个行号:

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