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