我想以这样一种方式来安排我的记录:d类总是排在第一位,然后e和f的比例是1:1,这意味着如果e排在第一位,那么f排在e之后,d总是排在第一位,这个顺序继续。
注意-如果某个类别出现多次,则与同一类别的另一个日期相比,具有旧日期的记录首先出现。
注意-allocationid最后14位包含日期和时间。根据allocationid日期,我们查找相同的类别记录,以便在类别内进行排列。
我的问题-
SELECT m.allocationID,mt.CatId,mt.CatSName,r.officerName,r.desgName,r.grade,r.cellNo,CASE
WHEN mt.CatSName = 'D' THEN 0
WHEN mt.CatSName = 'E' THEN 1
ELSE 2
END as ord
FROM msttransaction m,msttemp mt,regusers r WHERE (m.isPending='Y' AND m.statusR='Approve' AND m.iscancelled='No' AND m.allocationID IN ( SELECT mt.AllocationId FROM msttemp WHERE mt.quarterId='082505012')and SUBSTRING(m.AllocationId,1,11)=r.pfNpsNo) OR (m.isPending='N' AND m.type='Transit' AND m.statusR='Approve' AND m.iscancelled='No' AND m.allocationID IN ( SELECT mt.AllocationId FROM msttemp WHERE mt.quarterId='082505012')and SUBSTRING(m.AllocationId,1,11)=r.pfNpsNo) ORDER BY ord,SUBSTRING(m.AllocationId, -14)
1条答案
按热度按时间brtdzjyr1#
根据您的类别,您可以在select子句上取一个临时变量。0表示所有“d”类别。请看我的问题。希望对你有用。
示例-