我有SQL查询,它提供了以下示例数据:
Name | Address | Seq_No |
Name1 Add1 6
Name1 Add1 6
Name1 Add1 6
Name1 Add1 5
Name1 Add1 5
Name1 Add1 6
Name2 Add2 2
Name2 Add2 1
Name2 Add2 2
Name2 Add2 2
Name2 Add2 1
我希望能够从结果集中提取出SEQ_No为最大值的数据
我尝试在查询结束时使用HAVING:
HAVING SEQ_no=MAX(seq_no)
但如果我使用
,这不起作用HAVING SEQ_no=6
那么显然这会把seq_no = 6的数据拉出来,我对MAX做错了什么?
答案 0 :(得分:3)
你不需要在这里HAVING:
SELECT * FROM T WHERE SEQ_no=(SELECT MAX(SEQ_no) FROM T)
答案 1 :(得分:1)
使用Rank()函数根据seq分配排名,然后按Rank = 1过滤 喜欢 Rank()OVER(PARTITION BY clnt_name,cmpadd.add_1 ORDER BY hraptvpd.seq_no DESC)AS RNK 之后,您可以过滤RNK = 1
的位置我尝试编辑您的查询,如果有任何错误请将其整理出来
select
hgmclent.clnt_name
,cmpadd.add_1
,cmpadd.add_2
,cmpadd.add_3
,hgmprty1.post_code
,hgmprty1.prty_id
,hraptvpd.seq_no
,vd_prd
,void_cd
,void_desr
,st_date
,seq_no
,end_date
,est_avldt
,lst_revn,
Rank() OVER (PARTITION BY clnt_name,cmpadd.add_1 ORDER BY hraptvpd.seq_no DESC) AS RNK
from hgmprty1
join hratency on prty_ref=prty_id
join hrartamt on hrartamt.rent_acc_no=hratency.rent_acc_no
join hracracr on hracracr.rent_acc_no=hrartamt.rent_acc_no
join hgmclent on hgmclent.client_no=hracracr.clnt_no
join cmpadd on cmpadd.add_id=hgmprty1.add_cd
JOIN hraptvpd WITH (nolock) ON hraptvpd.prty_ref=hgmprty1.prty_id
JOIN hraptvps on hraptvps.prty_ref=hraptvpd.prty_ref AND seq_no=vd_prd
where
tency_end_dt is NULL AND
prim_clnt_yn=1
答案 2 :(得分:0)
select * from table where Seq_No >=all(select Seq_No from table);