Доброго времени, Господа.
Существует таблица, вида
Ее необходимо перевернуть, так, чтобы значения sync_table стали заголовками строк, при том не повторясь, а date_max - стали столбцами.
Примерно так:
Вот код, как получилось:
select sync_table,
[2014-02-14],[2014-02-15],[2014-02-16],[2014-02-17],[2014-02-18]
from
(
select
CAST([date] AS VARCHAR(24))+'' as [date_max]
, sync_table
, max(ms_duration) as max_time
from #t
group by [date], sync_table
having sync_table is not null
)x
PIVOT
(
MAX([max_time]) FOR [date_max] IN ([2014-02-14],[2014-02-15],[2014-02-16],[2014-02-17],[2014-02-18])
)xx
Но в этом примере перевернута только одна строка(max_time), а надо, чтобы перевернулись и max_time и min_time, но если я делаю еще один pivot, то получается вот так:
То есть вроде бы правильно, но, например на этом примере, строка Cars должна быть одна, и NULL повторяться непонятное количество раз не должно.
Вот код, как получилась последняя картинка
select sync_table,
[2014-02-14-MAX],[2014-02-15-MAX],[2014-02-16-MAX],[2014-02-17-MAX],[2014-02-18-MAX]
,[2014-02-14-MIN],[2014-02-15-MIN],[2014-02-16-MIN],[2014-02-17-MIN],[2014-02-18-MIN]
from
(
select
CAST([date] AS VARCHAR(24))+'-MAX' as [date_max]
, CAST([date] AS VARCHAR(24))+'-MIN' as [date_min]
, sync_table
, max(ms_duration) as max_time
, AVG(ms_duration) as avg_time
--, MIN(ms_duration) as min_time
from #t
group by [date], sync_table
having sync_table is not null
)x
PIVOT
(
MAX([max_time]) FOR [date_max] IN ([2014-02-14-MAX],[2014-02-15-MAX],[2014-02-16-MAX],[2014-02-17-MAX],[2014-02-18-MAX])
)xx
PIVOT
(
MAX([avg_time]) FOR [date_min] IN ([2014-02-14-MIN],[2014-02-15-MIN],[2014-02-16-MIN],[2014-02-17-MIN],[2014-02-18-MIN])
)xxx
Подскажите пожалуйста, в чем ошибка?