Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒SQL\T-SQL⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA

T-SQL 2012: PIVOT,UNPIVOT


USE tsql;

--Синтаксис PIVOT таков: Выбираем из finishQuery стобцы ([A], [B]), которые получились в результате обработки функцией SUM(pay) для стобца filial из запроса baseQuery
SELECT * FROM department;

SELECT A AS 'TotalFilialAPay', B AS 'TotalFilialBPay' FROM
(
SELECT filial, pay FROM department
) AS baseQuery
PIVOT
(
    SUM(pay) FOR filial IN ([A], [B])
) AS finishQuery;


--Оператор UNPIVOT выполняет действия, обратные оператору PIVOT, преобразуя столбцы данных в строки.
--Например есть Vendor - Поставщик и Employee - сотрудник. В таблице хранится количество заказов каждого сотрудника у каждого поставщика.
--Тогда развернуть стобцы сотрудников в строки сгруппировав их по поставщикам можно так:

SELECT * FROM pvt;

SELECT VendorID, Employee, Orders
FROM 
   (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
   FROM pvt) AS baseQuery
UNPIVOT
   (Orders FOR Employee IN 
      (Emp1, Emp2, Emp3, Emp4, Emp5)
)AS finishQuery;

--Рекомендуемая форма запроса PIVOT
WITH PivotData AS
(
  SELECT
    cisco,            --Столбец группировки
    mask,            --Распределяющий столбец
    ip                --Агрегирующий столбец
  FROM billing.dbo.station
)
SELECT *
FROM PivotData
  PIVOT(COUNT(ip) FOR mask IN ([255.255.255.0], [255.255.255.248]) ) AS P;


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru