[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-kakoe-naznachenie-u-operatorov-pivot-i-unpivot-v-transact-sql":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},870,"kakoe-naznachenie-u-operatorov-pivot-i-unpivot-v-transact-sql",25,"sql","SQL","🗃️","Какое назначение у операторов PIVOT и UNPIVOT в Transact-SQL?","`PIVOT` и `UNPIVOT` — нестандартные операторы Transact-SQL, выполняющие преобразование таблицы из строкового представления в столбцовое и обратно.\n\n`PIVOT` разворачивает строки в столбцы: уникальные значения одного столбца становятся именами новых столбцов в результате, а агрегатная функция вычисляет значения для каждой ячейки. Это удобно для создания сводных таблиц (crosstab).\n\n`UNPIVOT` выполняет обратное преобразование: столбцы разворачиваются обратно в строки. Используется для нормализации данных, которые пришли в «широком» формате.\n\n```sql\n-- PIVOT: из строк в столбцы\nSELECT *\nFROM (SELECT department, quarter, revenue FROM sales) AS src\nPIVOT (\n    SUM(revenue)\n    FOR quarter IN ([Q1], [Q2], [Q3], [Q4])\n) AS pvt;\n\n-- Результат: department | Q1 | Q2 | Q3 | Q4\n```\n\nВ PostgreSQL оператор `PIVOT` отсутствует, но аналогичный результат достигается с помощью `CASE`-выражений или расширения `tablefunc` (функция `crosstab`).\n\n> **На собеседовании:** объясните, что `PIVOT` превращает строки в столбцы (сводная таблица), а `UNPIVOT` — наоборот. Частая ошибка — не знать, что это специфика T-SQL, и не уметь сделать аналогичное преобразование в PostgreSQL через `CASE`.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Какое назначение у операторов PIVOT и UNPIVOT в Transact-SQL — Gymterview","`PIVOT` и `UNPIVOT` — нестандартные операторы Transact-SQL, выполняющие преобразование таблицы из строкового представления в столбцовое и обратно.","`PIVOT` и `UNPIVOT` — нестандартные операторы Transact-SQL, выполняющие преобразование таблицы из строкового представлен",[7,13],true]