You can use PIVOT - have a look at this CP article
SQL Wizardry Part Seven - PIVOT and arbitrary lists of data[
^]
I couldn't get your query to work, so here is a simplified version just to demonstrate
select * from
(
select CAST(Submit_Date AS DATE) as colDate, 'Hour ' + CAST(DATEPART(HOUR, Submit_Date) as varchar) as colHour,
char_Circle='andhar pradesh' ,
count(1) as aCount
from HPD_Help_Desk
group by CAST(Submit_Date AS DATE),DATEPART(HOUR, Submit_Date)
) as sourcedata
PIVOT
(
SUM(aCount) FOR colHour in ([Hour 0],[Hour 1],[Hour 2],[Hour 3],[Hour 4],[Hour 5],[Hour 6],[Hour 7],[Hour 8],[Hour 9],[Hour 11],[Hour 12])
) as pivotdata