2017-08-28 49 views
0

我想同時使用匯總的姓氏和名字列組合在一起,但它似乎相同的姓氏複製到每一個姓:CONCAT隨着ROLLUP

SELECT IFNULL(CONCAT(u.firstname, ' ', u.lastname),'Total Projects') AS Name, count(DISTINCT(p.id)) AS Total 
FROM projects p 
INNER JOIN users u ON p.creator_fk = u.id 
GROUP BY Name WITH ROLLUP; 

所以我最終的東西,如:

Name   | Total 

John Smith  | 10 
Sarah Smith | 25 
Tracy Smith | 5 
Total Projects | 40 
+0

你想通過名字和姓氏,以彙總? – Rams

+0

我相信你不能在group by中使用別名,而是將concatenation語句放在group by中。 – Lamar

+0

否我希望計數(p.id)彙總 – Niall

回答

1

按我的理解

SELECT IFNULL(name,'Total Projects') AS Name, count(DISTINCT(id)) AS Total 
from (select CONCAT(u.firstname,' ', u.lastname) as name,p.id 
    FROM projects p INNER JOIN users u ON p.creator_fk = u.id) as p GROUP BY name WITH ROLLUP; 
+0

這適用於停止複製的姓氏,但在'Total Projects'應該是它的底部,而不是在列表中的姓氏。 – Niall

+0

我沒有得到你 – Rams

+0

所以它可以工作,但名單上的最後一個人是'總項目'應該在哪裏。所以在我上面顯示的例子中,「Tracy」列出了兩次,一次是她自己的總數,另一次是累計總數。 – Niall