sql - SQL Server 中的窗口函数

这个会很快。我不能从 row_number() 函数中得到我想要的。我得到什么:

我需要 row_number() 仅在具有不同 dailyDosage 的不同 patid 上递增。所以屏幕上的第 4-9 行应该都是 1。第 13 行应该是 1(因为它是一个新的 patid),第 14 行应该是 2(因为每日剂量的变化。我得到的是:

select distinct 
     ROW_NUMBER() over(partition by rx.patid,quantity/daysSup*cast(REPLACE(LEFT(strength,PATINDEX('%[^0-9]%',strength)),'m','') as int) 
     order by rx.patid,quantity/daysSup*cast(REPLACE(LEFT(strength,PATINDEX('%[^0-9]%',strength)),'m','') as int))
     ,rx.patid
    ,rx.drugName
    ,rx.strength
    ,rx.quantity
    ,rx.daysSup
    ,rx.fillDate
    ,quantity/daysSup*cast(REPLACE(LEFT(strength,PATINDEX('%[^0-9]%',strength)),'m','') as int) as dailyDosage
    from rx 
    inner join (select distinct m.patid, m.sex, m.injurylevel from members as m) as m on m.PATID=rx.patid
    where ISNUMERIC(REPLACE(LEFT(strength,PATINDEX('%[^0-9]%',strength)),'m',''))=1 
    and REPLACE(LEFT(strength,PATINDEX('%[^0-9]%',strength)),'m','') not like '%.%' 
    and drugname in ('baclofen')
    and daysSup !=0 and quantity !=0
    and daysSup > 1
    order by rx.patid

SQL 服务器 2008 R2

最佳答案

我认为您正在尝试对每日剂量进行排名。尝试使用 dense_rank 而不是 row_nubmer

Row_number 枚举行。等级将相同的值保持在一起。 Dense_rank 进行枚举,分配第一组 1,下一组 2,依此类推。排名在编号中留下空白。

https://stackoverflow.com/questions/13367951/

相关文章:

c# - 正则表达式检查字符串的第二个字母

sql - 如何使用带有文本 "|"的 sql 脚本创建文本文件

ruby-on-rails - 是否可以在 Rails 中更改 URL 中的 Controller

vb.net - VB字典包含值返回键

c# - 从字符串中删除无法识别的 ASCII 字符

asp.net - 如何在 vb.net 中做正则表达式

security - 20字节数据CRC16冲突的可能性有多大?

perl - 调用 ref 没有返回任何东西

apache - 从 XAMPP 运行 apache 服务时出错

entity-framework - 找不到字段的映射