2012-11-26 34 views
0

im有一个视图需要包括志愿参加活动的成员数。我收到一个错误“不是单一群组功能”。任何想法如何解决这个问题?在创建视图时使用count on

CREATE VIEW atbyrd.events__view AS 
SELECT e.name, e."DATE", b."LIMIT",b.allocated_amount, COUNT(em.member_id), e.comments 
FROM events e INNER JOIN budgets b ON b.event_id = e.id 
INNER JOIN event_members em ON em.event_id = e.id; 

回答

1
SELECT e.name, 
     e."DATE", 
     b."LIMIT", 
     b.allocated_amount, 
     (select COUNT(member_id) from event_members) as mem_count, 
     e.comments 
FROM events e 
INNER JOIN budgets b ON b.event_id = e.id 
INNER JOIN event_members em ON em.event_id = e.id; 
+0

这会计算所有成员,而不仅仅是给定事件的成员 –

+0

我修改了您的筛选答案。感谢帮助 –

1

您可以使用analytic function count()

SELECT e.name 
    , e."DATE" 
    , b."LIMIT" 
    , b.allocated_amount 
    , COUNT(em.member_id) over (partition by em.event_id) 
    , e.comments 
    FROM events e 
INNER JOIN budgets b 
    ON b.event_id = e.id 
INNER JOIN event_members em 
    ON em.event_id = e.id; 

简单地把这个计数每event_id成员的数量,但因为它不是一个聚合函数没有GROUP BY是必需的。您收到每event_id相同的价值。