Данные, которые у меня есть, выглядят так:
╔═════════╦═════════╦═════════╦══════════════╦══════════════╦══════════════╗
║ option1 ║ option2 ║ option3 ║ percent_opt1 ║ percent_opt2 ║ percent_opt3 ║
╠═════════╬═════════╬═════════╬══════════════╬══════════════╬══════════════╣
║ 10 ║ 4 ║ 1 ║ 0.67 ║ 0.27 ║ 0.07 ║
╚═════════╩═════════╩═════════╩══════════════╩══════════════╩══════════════╝
Итак, если я хочу сделать первые три значения строк заголовков столбцов, а затем другие значения строк, как мне это сделать?
Вот что я имею в виду:
╔═════════╦════════╦═════════════╗
║ options ║ values ║ percentages ║
╠═════════╬════════╬═════════════╣
║ option1 ║ 10 ║ 0.67 ║
╠═════════╬════════╬═════════════╣
║ option2 ║ 4 ║ 0.27 ║
╠═════════╬════════╬═════════════╣
║ option3 ║ 1 ║ 0.07 ║
╚═════════╩════════╩═════════════╝
Вот код, который я использую:
declare @tbl as table (
option1 numeric(18,0),
option2 numeric(18,0),
option3 numeric(18,0),
per_opt1 numeric(18,2),
per_opt2 numeric(18,2),
per_opt3 numeric(18,2)
)
insert into @tbl
values (10,4,1,0.67,0.27,0.07)
;
select * from
(
select t.[option1],t.[option2],t.[option3]
from @tbl as t
) as srctbl
unpivot (
val for options in (option1,option2,option3)
) as unpiv
Я не знаю, как получить эти последние три процентные значения столбцов должны быть значениями строк, частично потому, что у меня не может быть другого типа данных, и потому что я не знаю, как это сделать.
Есть предложения?