Перекрестные запросы в sql server

levingreg
Дата: 28.04.2015 11:58:46
Добрый день. Никогда раньше не пользовался форумами, но решил задать вопрос, поскольку думаю над задачей уже неделю.

Задача такая:
есть таблица

Исходная таблица:

Код s001 s001b s001data s002 s002b s002data

100 (int)x iny(y) somedata1 (int)z (int)c somedata2

Нужно получить :

Код co1 col2 col3 col4 col5 col6

100 s001 (int)x s001b iny(y) s001data somedata1
100 s002 (int)z s002b (int)c s002data somedata2

Судя по задаче надо использовать UNPIVOKE и PIVOKE, но я смог добиться только такого результата:

Код co1 col2

100 s001 (int)x
100 s002 (int)z

        SELECT Код, co1, col2
			FROM (SELECT        Код, s001, s002
				 FROM       my_table) p

				UNPIVOT
			   (col2 FOR co1 IN 
				  (s001, s002)
			) unpvt


а как перевернуть остальные поля и совместить их вместе - не пойму. Поэтому прошу помощи.
ps. Извините за оформление - пишу первый раз.
Glory
Дата: 28.04.2015 12:02:32
select s001,s001b ,s001data from mytable
union all
select s002,s002b ,s002data from mytable
levingreg
Дата: 28.04.2015 12:11:15
Большое спасибо!
levingreg
Дата: 28.04.2015 12:20:28
И еще сказу спрошу если кол-во столбцов будет x(s00x s00xb s00xdata)
Glory
Дата: 28.04.2015 12:24:01
levingreg
И еще сказу спрошу если кол-во столбцов будет x(s00x s00xb s00xdata)

тогда чило UNION ALL-ов будет x-1
levingreg
Дата: 28.04.2015 12:31:46
Благодарю за помощь!
levingreg
Дата: 28.04.2015 12:48:49
Но все-таки таблица, которая должна получиться - не получается. Помогите еще, пожалуйста. Если можно код для получения той таблицы. Заранее благодарю.
Glory
Дата: 28.04.2015 12:51:00
levingreg
Помогите еще, пожалуйста.

Самим придумать, что не получается и найти решение ?
levingreg
Дата: 28.04.2015 12:57:58
Не могу состыковать поворот столбца и UNION ALL
Glory
Дата: 28.04.2015 12:59:15
levingreg
Не могу состыковать поворот столбца и UNION ALL
select s001,s001b ,s001data from mytable
union all
select s002,s002b ,s002data from mytable
union all
select s003,s003b ,s003data from mytable
union all
select s004,s004b ,s004data from mytable
...