首页 > 解决方案 > 根据类别为药物创建序列号列

问题描述

我必须为药物清单创建一个 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

标签: sqlsql-server

解决方案


哦,我想我看到了规则。

“对于每种药物类型,在每个日期,序列号应按药物字母顺序递增。”

好的。

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

推荐阅读