【问题标题】:Duplicate and Out of Sequence Numbers重复和无序号
【发布时间】:2014-05-20 12:20:10
【问题描述】:

每个患者都应该有唯一的 randomID,这些 randomID 应该是按顺序排列的,所以我应该 带回 (Duplicate RandomID) 和 (Out of Sequence RandomID)

这是我的查询

declare @valueCheck table
(RowNumber Int Identity
,PatientID varchar(25)
,RandomID varchar(25))

insert into @ValueCheck
(PatientID, RandomID)

select
PatientID
, RandomID

From   dbo.CurrentData

where QuestionID= 200
order by patientid, RandomID 

如果我应用这个条件,我会得到(乱序的 RandomID)

Select s1.PatientID, s1. RandomID as OutOFSequence
From @ValueCheck s1
Left Join @ValueCheck s2
On s1.RandomID = s2.RandomID – 1
Where s2.RandomID is Null

如果我应用这个,我会得到 (Duplicate RandomID)

select * from @ValueCheck
where RandomID in 
(Select RandomID
From @ValueCheck
Group by RandomID
Having Count(RandomID) > 1)

我想要的是,我想要一个将两种条件结合在一起的表格

【问题讨论】:

    标签: mysql sql sql-server sql-server-2008 tsql


    【解决方案1】:

    你为什么不做一个联合查询。

    Select s1.PatientID, s1. RandomID, 'OutOFSequence'
    From @ValueCheck s1
    Left Join @ValueCheck s2
    On s1.RandomID = s2.RandomID – 1
    Where s2.RandomID is Null
    union all
    select PatientID, RandomID, 'Duplicate' from @ValueCheck
    where RandomID in 
    (Select RandomID
    From @ValueCheck
    Group by RandomID
    Having Count(RandomID) > 1)
    

    【讨论】:

    • 我不能使用 union all,错误信息是:所有使用 UNION 组合的查询,其目标列表中必须有相同数量的表达式
    • 您的字段计数和类型应该在两个联合查询中匹配。我已更新查询以反映此更改。
    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多