2015-03-10 4 views
0

Я подготовил следующий отчет. Он отображает три столбца (AccruedInterest, Tip & CardRevenue) по месяцам за данный год. Теперь я хочу «Повернуть» результат, чтобы значение StartDate превратилось в 12 столбцов.Таблица поворота на одну колонку и несколько агрегатов

У меня есть это:

enter image description here

мне это нужно: enter image description here

Я попытался поворотными таблицу, но мне нужно несколько столбцов, которые будут агрегатироваться как вы видите.

ответ

0

Вам необходимо отключить данные и стержень. Примечание: Я поставил свои собственные значения в таблице, чтобы сделать каждый уникальный, чтобы вы знали, что данные верны.

--Create YourTable 
SELECT * INTO YourTable 
FROM 
(
     SELECT CAST('2015-01-01' AS DATE) StartDate, 
      607.834 AS AccruedInterest, 
      1 AS Tip, 
      3 AS CardRevenue 
    UNION ALL 
    SELECT CAST('2015-02-01' AS DATE) StartDate, 
      643.298 AS AccruedInterest, 
      16.8325 AS Tip, 
      5 AS CardRevenue 
) A; 
GO 

--This pivots your data 
SELECT * 
FROM 
(
    --This unpivots your data using cross apply 
    SELECT col,val,StartDate 
    FROM YourTable 
    CROSS APPLY 
    (
     SELECT 'AccruedInterest', CAST(AccruedInterest AS VARCHAR(100)) 
     UNION ALL 
     SELECT 'Tip', CAST(Tip AS VARCHAR(100)) 
     UNION ALL 
     SELECT 'CardRevenue', CAST(CardRevenue AS VARCHAR(100)) 
    ) A(col,val) 
) B 

PIVOT 
(
    MAX(val) FOR startdate IN([2015-01-01],[2015-02-01]) 
) pvt 

Результаты:

col    2015-01-01 2015-02-01 
AccruedInterest 607.834  643.298 
CardRevenue  3   5 
Tip    1.0000  16.8325 
Смежные вопросы