>>>>>I have a table that looks like this
>>>>>
>>>>>Location ServiceDay
>>>>>
>>>>>Farmingdale Monday
>>>>>Farmingdale Tuesday
>>>>>Bethpage Monday
>>>>>Bethpage Saturday
>>>>>
>>>>>I'd like to have a query that gives me one row for each location like this
>>>>>
>>>>>Location Sunday Monday Tuesday Wednesday Thursday Friday Saturday
>>>>>Farmingdale Yes Yes
>>>>>Bethpage Yes Yes
>>>>>
>>>>>
>>>>>I want yes or space to show in column relating to the service day
>>>>>Any ideas?
>>>>
>>>>Look up PIVOT operator in SQL Server. It is very easy.
>>>
>>>I did and can't make sense of it.
>>>They seem to want to aggregate.
>>
>>Select * from (select Location, ServiceDay, 'Yes' as [Service] from ServicesPerformed) X
>>PIVOT (max(Service) for ServiceDay IN ([Monday], [Tuesday], etc.)) pvt
>>
>>If you don't like NULL you would need
>>
>>select Location, COALESCE([Monday], '') as Monday, etc.
>>from ...
>
>Thank you, Naomi
>I'll try it.
I was updating my message with the alternative solution
Or just use case based pivot.
select Location, max(case when ServiceDay = 'Monday' then 'Yes' else '' end) as Monday,
etc.
from ServicesPerformed
GROUP BY Location
ORDER BY Location
You can also read these articles:
http://blogs.lessthandot.com/index.php/datamgmt/datadesign/understanding-sql-server-2000-pivot/and
http://blogs.lessthandot.com/index.php/datamgmt/datadesign/dynamic-pivot-on-multiple-columns/And in TechNet Wiki:
http://social.technet.microsoft.com/wiki/contents/articles/17351.sql-server-pivot.aspx
If it's not broken, fix it until it is.
My Blog