sql - 根据类别为药物创建序列号列
问题描述
我必须为药物清单创建一个 Sno 列。请仔细阅读以下示例以供参考。Typ = D-糖尿病药物 O-其他药物
ID Date Typ Drug
123 02/05/2020 D aaa
123 02/05/2020 D bbb
123 02/05/2020 D nnn
123 02/05/2020 O ccc
123 02/05/2020 O fff
123 05/06/2020 D asd
456 12/06/2020 D wef
456 12/06/2020 D fgf
456 12/06/2020 O rty
预期产出
ID Date Typ Drug Sno
123 02/05/2020 D aaa 1
123 02/05/2020 D bbb 2
123 02/05/2020 D nnn 3
123 02/05/2020 O ccc 1
123 02/05/2020 O fff 2
123 05/06/2020 D asd 1
456 12/06/2020 D wef 1
456 12/06/2020 D fgf 2
456 12/06/2020 O rty 1
解决方案
哦,我想我看到了规则。
“对于每种药物类型,在每个日期,序列号应按药物字母顺序递增。”
好的。
select ID,
[Date],
Typ,
Drug,
Sno = row_number() over (partition by Date, Typ order by Drug asc)
from YourTable
如果您还需要按 ID 进行分区,也请包括:
select ID,
[Date],
Typ,
Drug,
Sno = row_number() over (partition by ID, Date, Typ order by Drug asc)
from YourTable
推荐阅读
- php - 使用 ssl 向服务器请求时出现错误“Гknown protocol”
- r - 栅格/预测函数返回低于训练样本范围的结果
- java - 在java中实现插入排序时比较多个字段
- python - 如何在 pandas 中列的值计数条件下采用相同的 DataFrame?
- git - 在 Azure DevOps 中使用 master 和 develop 分支,避免 master 的一前一后状态
- c++ - 使用 scanf_s 获取字符串值的问题
- docker - 多个 docker 容器在同一主机上相互解析
- ionic4 - Ionic4 SplashScreen 背景为黑色
- azure - 将 Azure 发布工件默认目录配置为 C(使用“1”参数调用“GetHostByName”:“No such host is known”)
- prometheus - 如何在普罗米修斯中将时间范围内的总请求作为单个标量值获取?