我有场景,我必须为每条记录提供序列号。如果序列号不同,则序列号应重新初始化为初始值。
我是这样尝试的
declare @account_no varchar(50)
declare @seq_no int
declare @temp_no int
set @temp_no=1
select
(@account_no = (CASE WHEN @account_no <> PN.vst_int_id
THEN PN.vst_int_id
END))
,(@seq_no = (CASE WHEN @account_no = PN.vst_int_id
THEN @temp_no + 1
ELSE 1
END))
,@seq_no
,nte_pri_cd
from
TSM310_PATIENT_NOTES PN
where
vst_int_id = '4588611'
答案 0 :(得分:4)
好消息我们在SQL Server中有Ranking Functions
来使这些操作变得非常简单。请注意,它仅适用于Sql Server 2005及更高版本。
select *,
ROW_NUMBER() OVER (PARTITION BY AccountID ORDER BY SomeColumn) SequenceNumber
from TSM310_PATIENT_NOTES PN