Основываясь на том, что ваш previous question was tagged with sql server, я предполагаю, что вам нужен синтаксис SQL-сервера.
Для того, чтобы получить результат, вам необходимо использовать функции UNPIVOT
и PIVOT
. Неавтомобиль возьмет столбцы TCount
и Count
и преобразует их в строки, а затем PIVOT
возьмет dates
и преобразует их в столбцы.
Если вы знаете значения раньше времени, то вы можете жестко закодировать запрос:
select *
from
(
select date, value, col
from yourtable
unpivot
(
value
for col in (tcount, count)
) unpiv
) src
pivot
(
max(value)
for date in ([2013-02-06], [2013-02-12],
[2013-02-21], [2013-02-27])
) piv;
См SQL Fiddle with Demo
Однако, если у вас есть неизвестное число дат, то вам необходимо динамическое SQL:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(convert(varchar(10), Date, 120))
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT col, ' + @cols + ' from
(
select convert(varchar(10), Date, 120) date,
value, col
from yourtable
unpivot
(
value
for col in (tcount, count)
) unpiv
) src
pivot
(
max(value)
for date in (' + @cols + ')
) p '
execute(@query)
См SQL Fiddle with Demo
Результат обоих:
| COL | 2013-02-06 | 2013-02-12 | 2013-02-21 | 2013-02-27 |
--------------------------------------------------------------
| COUNT | 35 | 23 | 54 | 12 |
| TCOUNT | 3500 | 4000 | 1000 | 5000 |
** WHAT ** база данных система/продукт/РСУБД ?? –
Возможный дубликат [SQL Server dynamic PIVOT query?] (Http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) –