Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

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;


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

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

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

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

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект