因此,我有一个具有ArticleID(GUID),RevisionNumber(整数)和StatusCode(文本)的表。文章可以具有任意数量的修订版本,但是每次创建新修订版本时,上一个修订版本的StatusCode应该为“已修订”,而最新修订版本的StatusCode可以为“有效”或“草稿”或“取消”。但是,数据混乱了,我需要确定哪些记录(千个中的十个)没有正确的状态。样本数据:
Article ID RevisionNumber StatusCode
========== ============== ==========
xx-xxxx-xx 7 Active
xx-xxxx-xx 6 Revised
xx-xxxx-xx 5 Active
xx-xxxx-xx 4 Draft
xx-xxxx-xx 3 Revised
xx-xxxx-xx 2 Active
xx-xxxx-xx 1 Revised
xx-xxxx-xx 0 Revised
xx-yyyy-yy 1 Active
xx-yyyy-yy 0 Active
在上述情况下,我需要知道xx-xxxx-xx修订版5、4和2的状态不正确,并且xx-yyyy-yy修订版0不正确。如何使用sql server 2012从sql查询中获取此信息?
如果存在更高版本的修订号,则标识不属于“修订版”的任何修订版。
那么似乎只是知道最新版本是什么。
一个MAX
OVER
可以做到的。
SELECT ArticleID, RevisionNumber, StatusCode
FROM
(
SELECT ArticleID, RevisionNumber, StatusCode
, MAX(RevisionNumber) OVER (PARTITION BY ArticleID) AS MaxRevisionNumber
FROM YourTable
) q
WHERE (RevisionNumber < MaxRevisionNumber AND StatusCode != 'Revised')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句