我试图返回状态列表中的“最大”值。但是,我想为字符串值指定一个排序值,以便通过我自己的排名返回最大值,而不是按字母顺序排列。SQL使用查找来返回组中的最大值?
这里是我的代码:
select x.wbs1, x.wbs2, x.wbs3, x.custstatus
from (
select wbs1,wbs2,wbs3,custstatus=MAX(custstatus)
from Projects_CRStatus
where custsentdate >= 'June 1, 2001' AND custsentdate <= 'June 30, 2013'
AND CustStatus IN ('RECEIVED AT VENDOR', 'CONFIRMATION SENT',
'IC PENDING','CONFIRMATION RECEIVED','CANCELLED')
group by wbs1,wbs2,wbs3) x
inner join (
select wbs1,wbs2,wbs3,custsentdate=max(custsentdate)
from Projects_CRStatus
group by wbs1,wbs2,wbs3) y
on (x.wbs1=y.wbs1 and x.wbs2=y.wbs2 and x.wbs3=y.wbs3)
ORDER BY CustEnrollmentID
我想要做的是排名CustStatus的值,这样,而不是返回CustStatus的顶部按字母顺序排列的结果,我得到了这个秩序的最先进的地位。
- '接收的供应商'
- '确认书SENT'
- 'IC PENDING'
- 'CONFIRMATION RECEIVED'
- '已取消'
为了澄清,我正在寻找在x中的每个wbs1,wbs2,wbs3分组内的排名最高的状态。 –