sql - 在 SQL 中为另一列中的新值添加具有重复序列号的列
问题描述
我需要有一列可以识别特定列的序列(给定示例中的名称),并且它从 1 开始作为新名称。请参阅下表。我不需要重复值的计数,我希望记录它们的发生。例如,如果第一次出现在表中,则在其前面显示 1,如果第二次出现,则显示 2,依此类推.... 再次显示 1 表示在列中遇到的新值。
我正在尝试在 Excel VBA SQL 查询中实现它......
解决方案
大多数 DBMS 都有row_number()
功能,所以我会使用它:
select t.*, row_number() over (partition by name order by ?) as seq
from table t;
如果 DBMS 没有row_number()
功能,那么您可以使用 subquery :
select t.*, ( select count(*)
from table t1
where t1.name = t.name and t1.pk <= ?
) as seq
from table t;
?
指示您的pk
( primary key
) 列,该列在指定您的列顺序的表中具有唯一的唯一值。
推荐阅读
- java - Spring gradle build jar 找不到带有 NoClassDefFoundError 的主类
- python - Python获取类但排除继承的属性和方法
- python - django 的多个子域
- python-3.x - ValueError:未知损失函数:triplet_loss
- angularjs - 避免对 Angular JS 的 XSS 攻击
- reactjs - redux 状态更改后组件不重新渲染
- coq - Coq:证明 < 和 ≤ 之间的关系
- vue.js - Vue 的“v-model”容易受到 XSS 攻击吗?
- python - 有没有办法可以将这些公式组合到一个单元格中?
- bash - 如何使用 sed 命令删除恰好包含 2 个字符的单词