Построение полной перекрестной таблицы средствами SQL

Опубликовано Feb 27, 2013 в Язык SQL | Нет комментариев

,

Построение полной перекрестной таблицы средствами SQL

… Были справедливые замечания, что мало у нас еще задач по SQL. Вот, потихоньку расширяем эту рубрику.

Итак, по исходным данным поста “Поиск города по почтовому коду” нужно построить прямоугольную матрицу, которая содержит ВСЕ возможные комбинации ZIP-кодов и городов. В ячейках этой матрицы должна стоять 1, если ZIP-код покрывает город, и 0 в противном случае. То есть для приведенных исходных данных получиться должно то, что показано на рисунке. 

Если кто знаком с опцией PIVOT оператора SELECT в T-SQL, то решение в таком духе найти достаточно легко.

SELECT * FROM dbo.ZipCityForPost
PIVOT (
  COUNT(City) FOR City in ([City1], [City2], [City3], [City4], [City5], [City6])
) AS pvt

Но идея задачи состоит в том, чтобы матрица строилась для всех имеющихся значений городов, то есть текст запроса было бы не нужно изменять, если бы, например,  выполнился опрератор

INSERT [dbo].[ZipCityForPost] ([Zip], [City]) VALUES (N'Zip7 ', N'City7')

Автор публикации:

Оставить комментарий

Ваш адрес email не будет опубликован.


*