2014-02-20 2 views
0

Andddd Я вернулся! Я пытаюсь получить счет продаж недвижимости в этом db, и у меня есть, чтобы разобраться во всех продажах по городу. Отлично. Я вложил в группу пункт, который ДОЛЖЕН группировать их по тому, в каком городе они находятся, но это не так. Я уверен, что это глупая ошибка, может ли кто-нибудь сказать мне, что мне не хватает?Группа по команде не группирует результаты моего запроса

SELECT rl.AgentID, rl.first_name, rl.last_name, Count(town) as Town 
FROM [INTERN_DB2].[dbo].[PaymentList] pl inner join 
(Select agentID, min(first_name) as first_name, min(last_name) as last_name 
    From [Intern_DB2]..[RealEstateAgentList] 
    GROUP BY agentID, first_name, last_name 
) rl 
ON rl.AgentID = pl.AgentID 
GROUP BY rl.AgentID, rl.first_name, rl.last_name, town; 

Я думаю, что моя ошибка в команде count, но я не уверен.

+0

Какая ошибка вы получаете? –

+0

Не ошибка, просто не получая точный результат, который я хочу. Я получаю его сгруппированным так, как я хочу (еще раз спасибо за это), я просто хочу, чтобы он прекратил давать мне несколько результатов для той же записи. И.Е. Вместо того, чтобы сказать, что дубовый пляж имеет 3 продажи, его показ дубового пляжа 1 продается три раза. –

ответ

2

Вы, вероятно, хотите, чтобы удалить town из group by:

SELECT rl.AgentID, rl.first_name, rl.last_name, Count(town) as Town 
FROM [INTERN_DB2].[dbo].[PaymentList] pl inner join 
(Select agentID, min(first_name) as first_name, min(last_name) as last_name 
    From [Intern_DB2]..[RealEstateAgentList] 
    GROUP BY agentID, first_name, last_name 
) rl 
ON rl.AgentID = pl.AgentID 
GROUP BY rl.AgentID, rl.first_name, rl.last_name; 

С town в group by, вы подсчета количества совпадений для комбинации agentid/town. Таким образом, данный агент будет на несколько строк, по одному для каждого города. Затем он будет указывать количество строк в PaymentList, которые связаны с этим агентом.

Что вы хотите сделать? Если вы хотите считать уникальные города, где находится агент, то сделайте следующее:

SELECT rl.AgentID, rl.first_name, rl.last_name, Count(distinct town) as Town 
FROM [INTERN_DB2].[dbo].[PaymentList] pl inner join 
(Select agentID, min(first_name) as first_name, min(last_name) as last_name 
    From [Intern_DB2]..[RealEstateAgentList] 
    GROUP BY agentID, first_name, last_name 
) rl 
ON rl.AgentID = pl.AgentID 
GROUP BY rl.AgentID, rl.first_name, rl.last_name; 
+0

Это именно то, что я хочу! Спасибо, я знал, что чего-то не хватает. Я попробовал отдельный модификатор, но это не исправить мою проблему. Должен ли я делать это, когда вместо этого выбираю выделение? –

Смежные вопросы