Reputation: 11377
I am using the following stored procedure which works fine so far.
Can someone tell me how I have to change this in order to get a ranking for each of the nested Selects ? What I am looking for is a new rank that gets added to each of them so that every nested Select starts with 1, 2, 3 etc.
My SP:
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
END
Many thanks for any help with this, Tim.
Upvotes: 0
Views: 330
Reputation: 3266
Add this column to each of your nested selects:
rank() over(order by count(*) desc, policy) [Rank]
Upvotes: 1