Code:
SELECT
[ReadDate],
SUM(IIF([ReadHour]=0000,[SampleA],0)) AS A0000,
SUM(IIF([ReadHour]=0400,[SampleA],0)) AS A0400,
SUM(IIF([ReadHour]=0800,[SampleA],0)) AS A0800,
SUM(IIF([ReadHour]=1200,[SampleA],0)) AS A1200,
SUM(IIF([ReadHour]=1600,[SampleA],0)) AS A1600,
SUM(IIF([ReadHour]=2000,[SampleA],0)) AS A2000,
SUM(IIF([ReadHour]=0000,[SampleB],0)) AS B0000,
SUM(IIF([ReadHour]=0400,[SampleB],0)) AS B0400,
SUM(IIF([ReadHour]=0800,[SampleB],0)) AS B0800,
SUM(IIF([ReadHour]=1200,[SampleB],0)) AS B1200,
SUM(IIF([ReadHour]=1600,[SampleB],0)) AS B1600,
SUM(IIF([ReadHour]=2000,[SampleB],0)) AS B2000,
SUM(IIF([ReadHour]=0000,[SampleC],0)) AS C0000,
SUM(IIF([ReadHour]=0400,[SampleC],0)) AS C0400,
SUM(IIF([ReadHour]=0800,[SampleC],0)) AS C0800,
SUM(IIF([ReadHour]=1200,[SampleC],0)) AS C1200,
SUM(IIF([ReadHour]=1600,[SampleC],0)) AS C1600,
SUM(IIF([ReadHour]=2000,[SampleC],0)) AS C2000,
SUM(IIF([ReadHour]=0000,[SampleD],0)) AS D0000,
SUM(IIF([ReadHour]=0400,[SampleD],0)) AS D0400,
SUM(IIF([ReadHour]=0800,[SampleD],0)) AS D0800,
SUM(IIF([ReadHour]=1200,[SampleD],0)) AS D1200,
SUM(IIF([ReadHour]=1600,[SampleD],0)) AS D1600,
SUM(IIF([ReadHour]=2000,[SampleD],0)) AS D2000
FROM
MyTable
GROUP BY [ReadDate]
ORDER BY [ReadDate];