MSSQL編程筆記四 解決count distinct多個字段的方法


Distinct的作用是用於從指定集合中消除重復的元組,經常和count搭檔工作,語法如下

COUNT( { [ ALL | DISTINCT ] expression ] | * } )

這時,可能會碰到如下情況,你想統計同時有多列字段重復的數目,你可能會立馬想到如下方法:

selectcount( distinct col1 , col2 , col3 , .......) from table

但是,這樣是不允許的,因為count是不能統計多個字段的,雖然distinct是可行的。

 

有種比較直接的方法就是把消除重復后在統計查詢:

 select count(*) from (select distinct col1 ,col2 , col3 from table)A

 

但是在有些復雜情況下,比如你的統計值可能還需要作為新的臨時表的一列,而且這個新表可能還在做些其他復雜查詢時候,這樣就不是很方便了。

 

有種方法比較特別,就是把多個字段的當做一個字段去用於消除重復,比如把這個多個字段的字符串連接起來。如下:

selectcount(DISTINCT fcode+cast(fread_date as varchar(30))) from my_table

這種解決方案在某些情況還是挺方便的,雖然效率不高


免責聲明!

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



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