Я работаю над запросом, чтобы вернуть, сколько активистов добровольно вызвались в этом году командой более одного раза; Я получил его на работу в качестве отдельного запроса:Как использовать HAVING в подзапросе как часть инструкции выбора
SELECT Activists.team, COUNT(id) AS Activists
FROM
(
SELECT e.id, v.team,
COUNT(CASE WHEN (e.status="Completed" AND right(e.date,2)="15") THEN e.id END) AS count
FROM actiontable e
LEFT JOIN persontable v ON v.id = e.id
GROUP BY e.id, v.team
HAVING (count > 1)
) AS Activists
GROUP BY Activists.team;
Но я не могу вполне понять, как заставить его работать в более SELECT
заявлении. Проблема я бег в том, что у меня есть много других (более простой) части запроса, чтобы вернуть вещи команды также в SELECT
заявлении как:
COUNT(DISTINCT CASE WHEN v.WillCanvass = "X" THEN v.id END)
Так, очевидно, я не могу иметь HAVING (count > 1)
части запроса для активистов, потому что тогда это повлияет на все остальные части моего заявления SELECT
- так что мне нужен подзапрос выше, чтобы затронуть только ту часть, где я работаю.
Я сделал SQL Fiddle с образцом схемой, чтобы помочь с вышеупомянутым запросом, который работает - но в идеале хотелось бы, чтобы получить выходной сигнал, который выглядит примерно так, где Activists
подзапрос не влияет на WillCanvass
колонки (даже если Я составил цифры ниже):
Team Activists WillCanvass
Team A 2 2
Team B 8 5
Team C 7 3
Надеюсь, что имеет смысл - спасибо!
EDIT
Мой лучший выстрел на то, что я хочу - хотя запрос дает мне ошибки - выглядит следующим образом:
SELECT a.team as team,
COUNT(v.*) as activists,
SUM(CASE WHEN v.WillCanvass = "X" THEN 1 ELSE 0 END) as WillCanvass
FROM
persontable v
left join
(
SELECT e.id,
v.team,
v.WillCanvass,
COUNT(*) as count
FROM actiontable e
LEFT JOIN persontable v ON v.id = e.id
WHERE e.status="Completed" AND right(e.date,2)="15"
GROUP BY e.id
HAVING (count > 1)) as a
GROUP BY team;
Там же обновленный SQL скрипку его here ,
где ссылка на ** ваш ** sqlfiddle ??? – Alex
@Alex Извините, это встроено: [http://sqlfiddle.com/#!2/8f4e1d/2](http://sqlfiddle.com/#!2/8f4e1d/2) – Ryan
так что вы выполнили мой запрос там ? – Alex