hql 中的case when運用查詢

2021-07-02 22:42:17 字數 974 閱讀 2330

有以下hql:

string hql = "select new com.ks.admin.report.dto.reportmonthwithdrawaldto(" +

"count(*)," +

"sum(ct.tradetotal)," +

"sum(case when ct.tradetotal >= 0 then 1 else 0 end)," +

"sum(case when ct.tradetotal >= 0 then ct.tradetotal else 0 end)" +

") " +

"from custtrade ct " +

"where ct.tradetype = 'dr' " +

"and ct.tradetime between ? and ? " +

"and ct.tradedesc like '%提現%'";

count(*)返回的是long型別,sum(double型別)返回double型別,

sum(case when ct.tradetotal >= ? then ct.1 else 0 end) 返回long型別。

sum(case when ct.tradetotal >= 0 then 1 else 0 end)的意思是當ct.tradetotal>=0的時候會返回1,否則返回0,而sum會累加,因為0累加之後還是0,所以只會返回1的累加之後才會改變值,因此這表示統計ct.tradetotal>=0的資料總數。為什麼不用count呢?因為試驗過,count裡面無法用條件。

sum(case when ct.tradetotal >= 0 then ct.tradetotal else 0 end)的意思是當ct.tradetotal>=0的時候返回ct.tradetotal的值,否則返回0,同理,如果條件成立,會累加ct.tradetotal>=0的值。

如果以上描述有錯誤,請提出,一起共同學習。

SQLServer 中Case When的用法

case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...

SQL中case when的用法

一.單個case when用法 首先,新建乙個表 create table battle riqi date,result varchar 10 插入資料 insert all into battle values to date 2005 05 09 yyyy mm dd win into bat...

SQLServer 中Case When的用法

case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...