2016-09-14 72 views
0

我寫了一個查詢,它給了我單獨的行的結果,但問題是我想要單行結果。如何結合使用MySQL的SQL語句的結果

其中給出導致像下面

這裏計數有兩種可能性yes或no

,但我想是這樣

對整個結果我要爲同一個系統的名字結合起來,有沒有辦法做到這一點。

+0

你問單列,但給出一個輸出的例子有三列: –

+0

已更新的問題@ÁlvaroGonzález – Bhagya

+0

出於好奇,是'where service.ip_port in(select ip_port from service)'試圖過濾掉NULL?因爲我認爲'WHERE service.ip_port不是NULL'感覺更自然。 –

回答

1

COUNT()函數接受複雜的表達式,而不僅僅是列名。我不認爲我完全理解你的數據中包含或你想完成什麼,但你可以嘗試在這條線的東西:

SELECT service.sys_name AS sysname, 
COUNT(CASE status.status WHEN 'yes' THEN 1 END) AS count_yes, 
COUNT(CASE status.status WHEN 'no' THEN 1 END) AS count_no 
... 

這將省去NULL值。

+0

它沒有給出正確的結果。這個查詢是錯誤的 – Bhagya

+0

@Bhagya這幾乎是正確的查詢。問題是你想在'service.sys_name'字段上使用過濾器來從中刪除數字。你必須爲此定義規則。人們不能認爲這個名字總是有一個數字,而只是在字符串的末尾。如果你定義這個規則,你可能會得到這個答案的更新。 –

+1

而對於答案,這應該是SUM,而不是COUNT,count會計算它是1還是0. –