sqlserver group by后獲取其他字段(多種方法)


大家都知道用group by的話,select 后面指定的字段必須與group by后面的一致。group by 只有個別字段,如果拿出其他未分組的字段信息呢?在網上搜了下,

總結如下:

使用了group by 之后,就要求select后面的字段包含在group by 或聚合函數里面,這時如果想讀取其它字段則無法實現。

將你需要的字段放進max或min函數中,max:支持字符類型、數字類型。
select
max(id) as id,username,password from users
group by username,password
order by id desc

或者用:
select * from
(select part from employee group by part) as t1
inner join
(select distinct englishname from employee where part in (select part from employee group by part )) as t2
on t1.part =t2.part

參考:
select v.p ,v.a,v.b,v.c,v.d,v.e,v.f,v.g,v.h,v.i,v.j,v.k,v.l,v.m,v.m,v.n,v.o from vegaga v right join (
select min(id) as id,a,b,c,d,e,f,g,h,n from vegaga where a is not null group by a,b,c,d,e,f,g,h,n
) as v1 on v1.id=v.id order by v.id

我在sqlserver中這樣寫,達到了我想要的效果。

select max(CrmMemberID) as CrmMemberID,MemberName,COUNT("MemberName") as count_name
from [zfnewdb].[dbo].[tblCrmMemberAssign]
group by MemberName
having COUNT("MemberName") = 1

不僅拿到了MemberName字段,還拿到了我想要的CrmMemberID字段。想要其它字段繼續像上面的CrmMemberID字段那樣加上就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM