У нас есть таблица со следующей информацией:
Идентификатор учетной записи, номер касания, тип, дата касания и этап (ранжирование 1-3, 1, если число касания <50, 2, если 51-100,3, если> 100).
Снимок экрана из таблицы
Я ищу написать запрос, который фиксирует тип с наибольшим количеством касаний на каждом этапе для каждой учетной записи, выглядя примерно так:
Вывод, который я ожидаю получить
Вот текущий написанный мной запрос, который не работает для меня:
`SELECT distinct
a.[Account ID],
a.Stage,
bb.Stage1TopType,
bb.TypeCount_1,
c.Stage2TopType,
c.TypeCount_2,
d.Stage3TopType,
d.TypeCount_3
FROM SFAX.dbo.LinearTest as a
--STAGE 1
LEFT JOIN
(
SELECT
a.[Account ID],
a.Type as Stage1TopType,
Max(b.TouchCount) as TypeCount_1
FROM SFAX.dbo.LinearTest as a
LEFT JOIN
(
SELECT
[Account ID],
Type,
COUNT(TouchNumber) as TouchCount
FROM SFAX.dbo.LinearTest
WHERE Stage = 1
GROUP BY [Account ID], Type
) as b on a.[Account ID] = b.[Account ID]
WHERE a.Stage = 1
GROUP BY a.[Account ID], a.Type
) as bb on a.[Account ID] = bb.[Account ID]
--STAGE 2
LEFT JOIN
(
SELECT
a.[Account ID],
a.Type as Stage2TopType,
Max(b.TouchCount) as TypeCount_2
FROM SFAX.dbo.LinearTest as a
LEFT JOIN
(
SELECT
[Account ID],
Type,
COUNT(TouchNumber) as TouchCount
FROM SFAX.dbo.LinearTest
WHERE Stage = 2
GROUP BY [Account ID], Type
) as b on a.[Account ID] = b.[Account ID]
WHERE a.Stage = 2
GROUP BY a.[Account ID], a.Type
) as c on a.[Account ID] = c.[Account ID]
--STAGE 3
LEFT JOIN
(
SELECT
a.[Account ID],
a.Type as Stage3TopType,
Max(b.TouchCount) as TypeCount_3
FROM SFAX.dbo.LinearTest as a
LEFT JOIN
(
SELECT
[Account ID],
Type,
COUNT(TouchNumber) as TouchCount
FROM SFAX.dbo.LinearTest
WHERE Stage = 3
GROUP BY [Account ID], Type
) as b on a.[Account ID] = b.[Account ID]
WHERE a.Stage = 3
GROUP BY a.[Account ID], a.Type
) as d on a.[Account ID] = d.[Account ID]
`
Пожалуйста, дайте мне знать, еслиу вас есть какие-либо предложения о том, как я могу получить желаемый результат.