Обратный перекрестный запрос
|
|
Четверг, 09 Апреля 2015 г. 16:02
+ в цитатник
Коллеги, прошу помочь вот с такой задачей.
1. Есть матрица по миграции населения между двумя странами - простая таблица вида
from/to | страна1 | страна2 | страна3
страна1 | данные данные данные
страна2 | данные данные данные
страна3 | данные данные данные
2. Нужно получить таблицу вида
from | to | мигранты
страна1 | страна2 | 123
страна1 | страна3 | 456
страна2 | страна1 | 789
и т.д.
В моем понимании, первый вид - это, фактически, результат выполнения перекрестного запроса, от котор0го нужно перейти к нормализованной таблице. Думаю, что решение задачи сводится к написанию запроса на выборку из двух таблиц - собственно основной таблицы и ее транспонированной копии.
Вот как я вижу первый этап решения задачи: создаем в БД две таблицы From (наша исходная) и To (путем транспонирования).
Это выглядит так (ст - страны, данные в таблице - условное кол-во мигрантов:
From
ст|b1|b2|
a1|1 |2 |
a2|3 |4 |
To (транспонированная From)
ст|a1|a2|
b1|1 |3 |
b2|2 |4 |
А запрос должен выводить
a1|b1|1|
a1|b2|2|
a2|b1|3|
a2|b2|4|
Собственно, на запросе я застрял.
Пример БД с подготовленными таблицами From и To прилагаю.
п.с. вот на этой ветке форума -
http://www.sql.ru/forum/1151118/umnozhenie-matriy-ili-poisk-alternativnogo-resheniya-problemy# я уже пробовал найти решение, но там пока тишина.
_______________________
sharp data on #datablog
http://uadata.blogspot.com http://www.sql.ru/forum/1151417/obratnyy-perekrestnyy-zapros
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-