SQL Server: добавление рейтинга к вложенным выборкам
Я использую следующую хранимую процедуру, которая пока работает нормально.
Может кто-нибудь сказать мне, как я должен изменить это, чтобы получить рейтинг для каждого из вложенных выборок? То, что я ищу, - это новый ранг, который добавляется к каждому из них, так что каждый вложенный выбор начинается с 1, 2, 3 и т. Д.
Мой ИП:
SELECT *
FROM (
SELECT
(
SELECT policy,
COUNT(*) AS count0
FROM Log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -1, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count0 desc, policy
FOR XML PATH('currentMonth'), ELEMENTS, TYPE
)
UNION ALL
SELECT
(
SELECT policy,
COUNT(*) AS count1
FROM Log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -1, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count1 desc, policy
FOR XML PATH('prevMonth2'), ELEMENTS, TYPE
)
UNION ALL
SELECT
(
SELECT policy,
COUNT(*) AS count2
FROM Log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -2, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count2 desc, policy
FOR XML PATH('prevMonth3'), ELEMENTS, TYPE
)
UNION ALL
SELECT
(
SELECT policy,
COUNT(*) AS count3
FROM Log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -3, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count3 desc, policy
FOR XML PATH('prevMonth4'), ELEMENTS, TYPE
)
UNION ALL
SELECT
(
SELECT policy,
COUNT(*) AS count4
FROM Log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -4, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count4 desc, policy
FOR XML PATH('prevMonth5'), ELEMENTS, TYPE
)
UNION ALL
SELECT
(
SELECT policy,
COUNT(*) AS count5
FROM log_PE
WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -5, GETDATE()), 112) + '01', 112)
GROUP BY policy
ORDER BY count5 desc, policy
FOR XML PATH('prevMonth5'), ELEMENTS, TYPE
)
) AS Data(XmlData)
FOR XML PATH(''), ELEMENTS, TYPE
КОНЕЦ
Большое спасибо за любую помощь в этом, Тим.
1 ответ
Решение
Добавьте этот столбец к каждому из ваших вложенных элементов выбора:
rank() over(order by count(*) desc, policy) [Rank]