crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в FireBird: как преобразовать строки в столбцы?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kuler Дата 23.12.2008, 11:10
 
Цитата(AD @ 22.12.2008, 18:56) *
Думаю занимать он будет строк 50 минимум! :) Возможно, даже больше.

ну и что? да и не факт, да и лучше вообще по уму когда данные из БД сливаются в объекты классов (ну к примеру объект "работник" и тд), ибо обычно визуальные интерфейсы не такие уж и банальные, да и задел на будущее
AD Дата 22.12.2008, 18:56
 
Цитата(kuler @ 22.12.2008, 18:51) *
ну дык смотря какое нада, в данном случае я так понимаю надо будет из одного столбца расфасовать по нескольким столбцам? а конкретно во что пихать то нада?

Задача не моя - не знаю. Но вот "простейший" код преобразования хочу видеть! Думаю занимать он будет строк 50 минимум! :) Возможно, даже больше.
kuler Дата 22.12.2008, 18:51
 
Цитата(AD @ 22.12.2008, 18:41) *
Покажи, пожалуйста, это преобразование на стороне клиента! Самому интересно увидеть решение! :) Буду благодарен, если откликнешься и напишешь код преобразования!

ну дык смотря какое нада, в данном случае я так понимаю надо будет из одного столбца расфасовать по нескольким столбцам? а конкретно во что пихать то нада?
AD Дата 22.12.2008, 18:41
 
Цитата(kuler)
преобразование на стороне клиента будет простейшим

короче врядли sql предназначен для вывода большого множества столбцов а уж тем более переменного, это использование не по назначению. СУБД это не оперативная память где как хочешь измерения фигаришь

Покажи, пожалуйста, это преобразование на стороне клиента! Самому интересно увидеть решение! :) Буду благодарен, если откликнешься и напишешь код преобразования! :)
kuler Дата 22.12.2008, 18:31
  возвращать
A
val1
...
valn
A+1
val1
...
valn
...

преобразование на стороне клиента будет простейшим

короче врядли sql предназначен для вывода большого множества столбцов а уж тем более переменного, это использование не по назначению. СУБД это не оперативная память где как хочешь измерения фигаришь
Litkevich Yuriy Дата 22.12.2008, 16:49
 
Цитата(kuler @ 22.12.2008, 19:21) *
ну а если бы там было не 23 а 1023?
а я везучий ;)

А у тебя варианты есть?
kuler Дата 22.12.2008, 16:21
  ну а если бы там было не 23 а 1023?
Litkevich Yuriy Дата 22.12.2008, 14:53
  kuler, а на более умную фразу знаний наскребешь?
kuler Дата 22.12.2008, 11:27
  да вы батенька, извращенец!
Litkevich Yuriy Дата 19.12.2008, 17:26
 
Цитата(Tonal @ 19.12.2008, 18:01) *
Не проще ли выдернуть все данные на клиента и там извращаться?
да вот на клиенте хотелось простоты, QSqlQueryModel + QTableView

Сделал посредством двух процедур. Одна делает из столбца строку, а вторая делает нужное кол-во строк.
вот так работает первая:
    FOR select
         Sum(case when p.TID = '0' then p.PWR end),
         Sum(case when p.TID = '1' then p.PWR end),
         Sum(case when p.TID = '2' then p.PWR end),
         Sum(case when p.TID = '3' then p.PWR end),
         Sum(case when p.TID = '4' then p.PWR end),
         Sum(case when p.TID = '5' then p.PWR end),
         Sum(case when p.TID = '6' then p.PWR end),
         Sum(case when p.TID = '7' then p.PWR end),
         Sum(case when p.TID = '8' then p.PWR end),
         Sum(case when p.TID = '9' then p.PWR end),
         Sum(case when p.TID = '10' then p.PWR end),
         Sum(case when p.TID = '11' then p.PWR end),
         Sum(case when p.TID = '12' then p.PWR end),
         Sum(case when p.TID = '13' then p.PWR end),
         Sum(case when p.TID = '14' then p.PWR end),
         Sum(case when p.TID = '15' then p.PWR end),
         Sum(case when p.TID = '16' then p.PWR end),
         Sum(case when p.TID = '17' then p.PWR end),
         Sum(case when p.TID = '18' then p.PWR end),
         Sum(case when p.TID = '19' then p.PWR end),
         Sum(case when p.TID = '20' then p.PWR end),
         Sum(case when p.TID = '21' then p.PWR end),
         Sum(case when p.TID = '22' then p.PWR end),
         Sum(case when p.TID = '23' then p.PWR end)
    from P_HOURLYPWR(:pointid, :indate) p
    INTO :f00, :f01, :f02, :f03, :f04, :f05, :f06, :f07, :f08, :f09, :f10, :f11, :f12, :f13, :f14, :f15, :f16, :f17, :f18, :f19, :f20, :f21, :f22, :f23
...


если не писать Sum то исходная таблица (содержащая один столбец) превращается в диагональную матрицу, в которой по диагонали размещаются значения исходной. Ну а с помощью Sum(case...) получаем строку из N столбцов.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 21:13