在具有SQL查询中使用Max

时间:2014-06-18 08:08:43

标签: sql sql-server tsql

我有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做错了什么?

3 个答案:

答案 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);