Форум: "Прочее";
Текущий архив: 2015.01.04;
Скачать: [xml.tar.bz2];
ВнизКак трансформировать таблицу? (sql) Найти похожие ветки
← →
ВладОшин © (2014-05-30 17:51) [0]есть таблица:
varchar, varchar, integer
Комната Вопрос СолькоРазЗвучал
пример
Комната1 вопрос1 7
Комната2 вопрос2 4
Комната3 вопрос6 2
Комната2 вопрос1 3
надо преобразовать в таблицу
Комната1 Комната2 Комната3
вопрос1 7 3 0
вопрос2 0 4 0
вопрос6 0 0 2
mssql (но можно и oracle :) )
← →
ВладОшин © (2014-05-30 17:55) [1]ни разу так еще не приходилось перемещать, курсоры на ум лезут какие-то..
← →
antonn © (2014-05-30 17:59) [2]надо преобразовать в таблицу или в такой вывод (вьюхой, например)?
← →
ВладОшин © (2014-05-30 18:06) [3]вроде,
for K in (select distinct Комната )
for В in (select distinct Вопрос )
-- тут динамически формируем SQL
set @S = "
update newtable set СолькоРазЗвучал =
(select sum(СолькоРазЗвучал ) from table where комтната = K and Вопрос = B)
where комната__ = K and Вопрос__ = B)
"
exec @S
как-то так, надо допилить, но . .не надо, кажется, т.к. чет ерунда какая-то, кажется
← →
ВладОшин © (2014-05-30 18:07) [4]
> надо преобразовать в таблицу или в такой вывод
а разница? ну, пока в вывод надо.
← →
turbouser © (2014-05-30 18:08) [5]
SELECT * FROM
(SELECT Room, Answer, AnswerQuant FROM @T ) AS t PIVOT(SUM(AnswerQuant) FOR Room IN ([Комната1],[Комната2],[Комната3]) ) AS Pivots
← →
turbouser © (2014-05-30 18:09) [6]Сорри, не все скопипастил..
DECLARE @T TABLE (Room VARCHAR(50), Answer VARCHAR(50), AnswerQuant INT)
INSERT @T
SELECT "Комната1", "вопрос1", 7
UNION ALL
SELECT "Комната1", "вопрос1", 7
UNION ALL
SELECT "Комната2", "вопрос2", 4
UNION ALL
SELECT "Комната3", "вопрос6", 2
UNION ALL
SELECT "Комната2", "вопрос1", 3
--
SELECT * FROM
(SELECT Room, Answer, AnswerQuant FROM @T ) AS t PIVOT(SUM(AnswerQuant) FOR Room IN ([Комната1],[Комната2],[Комната3]) ) AS Pivots
← →
turbouser © (2014-05-30 18:10) [7]Result:
Answer Комната1 Комната2 Комната3
вопрос1 14 3 NULL
вопрос2 NULL 4 NULL
вопрос6 NULL NULL 2
← →
ВладОшин © (2014-05-30 18:15) [8]
> turbouser ©
спсибо, да, PIVOT, оно
теперь бы в 4к влезло :) там вопросов.. динамически строить все же пидется
← →
картман © (2014-05-30 18:28) [9]
> там вопросов
а комнат?
← →
junglecat (2014-05-30 18:41) [10]это квест такой? ходишь по комнатам и отвечаешь на вопросы? )
← →
[ВладОшин] © (2014-05-30 21:14) [11]
> картман © (30.05.14 18:28) [9]
т.е. наоборот, комнат много :)
> junglecat (30.05.14 18:41) [10]
да это условно, там по другое :)
← →
картман © (2014-05-30 21:32) [12]
> т.е. наоборот, комнат много :)
так транспонируй в запросе, на клиенте, если понадобится, можно обратно
← →
turbouser © (2014-05-30 23:38) [13]
> [ВладОшин] ©
Если все сложно и надо только на клиенте отображать, то для этого есть соотв. компоненты. Например cxPivotGrid
← →
turbouser © (2014-05-30 23:41) [14]FastCube еще есть
← →
Inovet © (2014-05-30 23:52) [15]> [14] turbouser © (30.05.14 23:41)
> FastCube
И в ФР кросстаблица есть
← →
ВладОшин © (2014-05-31 16:50) [16]не, все это (cxPivotGrid FastCube ФР ) хорошо, но не годится
у заказчика есть самописное ПО для вывода в браузер, которое умеет только таблицей показывать. Даже первоначальный вид (м/д прочим, не так просто получается, если собирать по всем ~15 таблицам из 3х БД)- Комната Вопрос СолькоРазЗвучал - его не устроил. Подавай аз есмь к показу..
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2015.01.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.001 c