Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Выборка динамически из одного поля в несколько колонок  [new]
гуманоид
Member

Откуда:
Сообщений: 18
Доброго!
Вопросец есть. Покопал форум не нашел ответ, может вопрос не верно ставил.
Не обессудьте. Если кто видел такую тему ткните носом плиз.
Можно ли выбрать из одного поля в разные колонки в зависимости от значения другой колонки.
Т.е. есть табличка
IdConttract idgoods Yearbay Cost    Primecost ....
  1 	       1      2015   40000   20000
  1 	       2      2015   15000   8000
  1 	       3      2015   4000    2000
  5 	       1      2016   38000   20000
  5 	       4      2016   8000    4000
  5 	       8      2016   33000   16000
  6 	       4      2017   8000    4000
  6 	       8      2017   33000   16000


Хотелось бы получить

Товар |    2015        |    2016        |   2017 ......
      | cost| primecost| cost| primecost| cost| primecost
-----------------------------------------------------------
1       40000   20000    38000   20000
2       15000   8000
3       4000    2000
4                        8000    4000    8000    4000
8                        33000   16000   33000   16000
23 ноя 21, 16:20    [22399756]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32896
SELECT
  CASE WHEN Yearbay = 2015 THEN Cost END AS Cost2015,
  CASE WHEN Yearbay = 2016 THEN Cost END AS Cost2016,
...
23 ноя 21, 16:29    [22399760]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 21053
гуманоид
Можно ли выбрать из одного поля в разные колонки в зависимости от значения другой колонки.
Обычно это не требуется, "колонка" задаётся в используемом отчётнике (см. "кросс-отчёт")
23 ноя 21, 16:35    [22399766]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
гуманоид
Member

Откуда:
Сообщений: 18
Мимопроходящий
SELECT
  CASE WHEN Yearbay = 2015....
...


Не совсем то.
Не известны заранее года которые будут отобраны и их интервал .

WildSery
"кросс-отчёт")


Насколько я понимаю речь о FR?
Но, мне надо отобразить это в гриде.
Ну и это я сильно упростил задачу. Данные там несколько сложнее.

Сообщение было отредактировано: 23 ноя 21, 17:18
23 ноя 21, 17:17    [22399799]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32896
гуманоид
Не известны заранее года которые будут отобраны и их интервал .
тогда упейся ап стену.
23 ноя 21, 17:19    [22399803]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2668
гуманоид,

нельзя так, чтобы заранее неизвестно число колонок.
Can not. Nie wolno. Muss nicht.

Грузи данные на клиента и верти как хочешь.
23 ноя 21, 17:22    [22399808]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
гуманоид
Member

Откуда:
Сообщений: 18
ъъъъъ
гуманоид,

нельзя так, чтобы заранее неизвестно число колонок.
Can not. Nie wolno. Muss nicht.

Ну почему нельзя? К примеру ОЛАП кубики оперируют данными и группируют в различных ипостасях.
К примеру тот же cxPivotGrid
Вот только мне надо нечто подобное, только что бы не суммировало входящие результаты )))

Мимопроходящий
тогда упейся ап стену.

)))
Ну зачем же ж так сразу.
На ум приходит только execute statement внутри execute block, формируемый динамически в момент выполнения прожки.
Надеялся, что может есть решение поизящнее.
Или это тоже не решает проблемы?
23 ноя 21, 17:43    [22399828]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54804

гуманоид
Надеялся, что может есть решение поизящнее.
Есть:
Grid1.Cells[ds.FieldByName('idgoods').AsInteger, 
ds.FieldByName('yearbuy').AsInteger] := ds.FieldByName('cost').AsInteger;

Posted via ActualForum NNTP Server 1.5

23 ноя 21, 17:46    [22399832]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32896
гуманоид
На ум приходит только execute statement внутри execute block, формируемый динамически в момент выполнения прожки.
Надеялся, что может есть решение поизящнее.
Или это тоже не решает проблемы?
на кой черт ещё и каскадную проктологию к этому подключать?
формируй запрос на клиенте динамически.
23 ноя 21, 17:47    [22399833]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
гуманоид
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov,
Ну это просто динамическое добавление колонок в Грид, а сама выборка для поставки данных в эти колонки?
Это я и имел в виду под программным формированием SQL запроса в ДатаСете и последующим динамическим формированием колонок самого грида.
Но, это несколько громоздким выглядит.
Ну раз нету другого пути, то пойду искать стену, об которую убиваться )))
Всем спасибо за участие.
23 ноя 21, 17:52    [22399835]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54804

гуманоид
а сама выборка для поставки данных в эти колонки?

Для кода выше:
select idgoods, yearbuy, cost from t order by 1,2

Posted via ActualForum NNTP Server 1.5

23 ноя 21, 18:00    [22399842]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
гуманоид
Member

Откуда:
Сообщений: 18
Мимопроходящий,
Мда... Видимо придется искать стенку...
Туповат видимо я. )))
Действительно можно программно сформировать твой запрос и всунуть в ДатаСет.
Благодарю.
23 ноя 21, 18:00    [22399843]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2668
гуманоид
ъъъъъ
гуманоид,

нельзя так, чтобы заранее неизвестно число колонок.
Can not. Nie wolno. Muss nicht.

Ну почему нельзя?

По кочану - (с).

гуманоид
...К примеру ОЛАП кубики оперируют данными и группируют в различных ипостасях.
К примеру тот же cxPivotGrid

А я тебе что написал?

ъъъъъ

Грузи данные на клиента и верти как хочешь.
23 ноя 21, 18:04    [22399849]     Ответить | Цитировать Сообщить модератору
 Re: Выборка динамически из одного поля в несколько колонок  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 21053
гуманоид
Ну почему нельзя? К примеру ОЛАП кубики оперируют данными и группируют в различных ипостасях.
К примеру тот же cxPivotGrid
Похоже, об олапах знания только "по верхам".
cxPivotGrid - это средство визуализации, по сути, тот же отчётник.
24 ноя 21, 09:16    [22400046]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить