2011-08-15 41 views
0

期間加入我得到如下表(例如):Java的Hibernate的JPQL查詢(聚合函數:計數)

+----------+----------+ 
| Hostname | Severity | 
+----------+----------+ 
| host1 | high | 
| host2 | medium | 
| host1 | high | 
| host2 | low | 
| host1 | low | 
| host2 | low | 
| host1 | low | 
| host2 | high | 
| host1 | high | 
| host2 | high | 
+----------+----------+ 

是否有可能創造我JPQL查詢在那裏我得到以下結果:

+----------+------+--------+-----+ 
| Hostname | high | medium | low | 
+----------+------+--------+-----+ 
| host1 | 3 | 0 | 2 | 
| host2 | 2 | 1 | 2 | 
+----------+------+--------+-----+ 

我試着用COUNTGROUP BY但我得到了這樣的事情:

host1,high,3 
host1,medium,0 
host1,low,2 

等等

BR,劉若英

+0

你使用了什麼查詢? –

回答

1

一個標準的sql查詢看起來像這樣 - 我不確定你正在使用的API需要付出多少努力,但是它是一個非常簡單的組合,並帶有案例邏輯。

select hostname, 
    sum(case when severity = 'high' then 1 else 0 end) as high, 
    sum(case when severity = 'medium' then 1 else 0 end) as medium, 
    sum(case when severity = 'low' then 1 else 0 end) as low 
from 
    Table 
group by 
    hostname 
order by 
    hostname 
+0

Thx適合我。 – reen

0

其實,你的結果看起來不錯,這是每個「細胞」只是一行。

如果你想擁有每Severity條目列,你必須使用子查詢,這是不值得冒這個險,IMO。只需讀取您獲得的行並手動將它們轉換爲矩陣格式即可。

+0

感謝您的回答,但我不想那樣做。上述工作,我可以得到wantet結果在一個單一的查詢。 – reen