powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование строк в столбцы
25 сообщений из 32, страница 1 из 2
Преобразование строк в столбцы
    #38825928
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые! Срочно нужно решить! Покапался в форумах и т.д. но нужного примера не нашел. Работаю с IBExpert. база Firebird 2.5. Имеется представление(view) в таком виде:
POD ZNACH POLYAОтдел_1 1100 Наша ценаОтдел_1 Лот_1 Наименование лотаОтдел_1 Компания_1 Заказчик

Хочу привести его в такой вид:
POD Наша цена Наименование лота ЗаказчикОтдел_1 1100 Лот_1 Компания_1

Может кто сталкивался с такой проблемой. Помогите решить проблему.
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38825934
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainek,

ищи в гугл по словам "разворот таблицы"! или "поворот таблицы"
или спроси у одноклассников

http://www.sql.ru/forum/435063/razvorot-tablichki
http://forum.ixbt.com/topic.cgi?id=40:3121-2
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38825951
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это называется "транспонирование" или "кросс".
Выполняется отчётником.
Особо упёртые "проктологи" делают в SQL, динамически собираемым запросом.
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38825969
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekМожет кто сталкивался с такой проблемой.сталкивались.
wainekПомогите решить проблему.Помочь или сделать вместо?

Твои попытки?

WildSeryОсобо упёртые "проктологи" делают в SQL, динамически собираемым запросом.ну если кол-во столбцов в которые делается разворот статическое и их немного, то и запрос будет статическим и достаточно простым. Собственно примеры постили, в том числе и я.

контекст case+group by
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826038
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyконтекст case+group by
Но в любом случае разбросать значения по гриду проще и дешевле на клиенте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826104
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky,
Вот мои попытки:
Код: sql
1.
2.
3.
4.
5.
 select pod,
(case polya when 'Наши цены' then znach else null end) as "Наши цены",
(case polya when 'Наименование лота' then znach else null end) as "Наименование лота",
(case polya when 'Заказчик' then znach else null end) as "Заказчик"
from zayav



Результат:

POD Наши цены Наименование лота ЗаказчикОтдел_1 1100 null nullОтдел_1 null Лот_1 nullОтдел_1 null null Компания_1
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826117
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAX добавить надо


Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
  pod,
  MAX(case polya when 'Наши цены' then znach else null end) as "Наши цены",
  MAX(case polya when 'Наименование лота' then znach else null end) as "Наименование лота",
  MAX(case polya when 'Заказчик' then znach else null end) as "Заказчик"
from zayav
GROUP BY 1
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826127
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНо в любом случае разбросать значения по гриду проще и дешевле на клиенте.
Dimitry Sibiryakovв любом случаеда
Dimitry Sibiryakovпрощене всегда
Dimitry Sibiryakovдешевледля сервера разумеется да, для кодирования не всегда.

Пусть каждый сам решает, как универсальней, как менее нагружать сервер, как менее париться при написании клиента (но не исключено, что иметь проблемы потом).
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826138
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Спасибо теперь одна строка. НО, если у Отдел_1 несколько записей т.е. несколько лотов запрос все равно выводит только одну строку это из за "max" как я понял
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826170
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyдля кодирования не всегда.
Да брось, есть такая отличная вещь как ассоциированные массивы. С ними разброс сводится к
одной строке:
Код: plaintext
1.
array[field1->value][field2->value] = field3->value;


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826182
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

а как это использовать? где писать?
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826192
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekгде писать?
В программе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826285
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема еще актуальна!)) незнаю уже что рассматривать
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826295
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekесли у Отдел_1 несколько записей т.е. несколько лотов запрос все равно выводит только одну строку это из за "max" как я понял
Код: sql
1.
2.
3.
select pod,lot, <далее как Денис показал>
from ...
group by pod, lot
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826314
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я в начале не так объяснил проблему. Конечный результат должен быть таковым:
POD Наша цена Наименование лота ЗаказчикОтдел_1 1100 Лот_1 Компания_1Отдел_1 2200 Лот_2 Компания_3 Отдел_2 5000 Лот_3 Компания_2

Незнаю может я где то не правильно делаю, но вышеперечисленные советы никак не помогают
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826321
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekНезнаю может я где то не правильно делаю, но вышеперечисленные советы никак
не помогают
Значит пришло время уступить рабочее место настоящему программисту.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826324
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хватит ужо народ пугать.
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826325
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekвышеперечисленные советы никак не помогаютэто тебе только кажется.
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826331
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekМожет я в начале не так объяснил проблему. Конечный результат должен быть таковым:
POD Наша цена Наименование лота ЗаказчикОтдел_1 1100 Лот_1 Компания_1Отдел_1 2200 Лот_2 Компания_3 Отдел_2 5000 Лот_3 Компания_2

Незнаю может я где то не правильно делаю, но вышеперечисленные советы никак не помогают
Из тех начальных данных что привел, такое не получить

зы. Получить конечно что-то подобное можно,
и даже иногда оно будет совпадать с ожидаемым
но для однозначного решения данных не хватает
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826360
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainekСимонов Денис,

Спасибо теперь одна строка. НО, если у Отдел_1 несколько записей т.е. несколько лотов запрос все равно выводит только одну строку это из за "max" как я понял

значит у тебя структура кривая. Как ты собрался узнать что нужно включить в одну строку, а что в другую?
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826578
Фотография TPAKTOPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

У вас нету уникальности по лоту, чтоб получить желаемий результат.
PODZNACHPOLYAОтдел_11100Наша ценаОтдел_1Лот_1Наименование лотаОтдел_1Компания_1ЗаказчикОтдел_11300Наша ценаОтдел_1Лот_2Наименование лота_2Отдел_1Компания_3Заказчик_3

И как SQL-у знать, какая цена к какому лоту ?
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826587
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код вьюшки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE OR ALTER VIEW ZAYAV(
    POD,
    ZNACH,
    NAZVA)
AS
select dd.name, task_attribute_values.view_value_short, mf.name from task
      left join employertaskids tt on task.id=tt.id_task
      left join employer ee on  tt.id_employer=ee.id
      left join department dd on ee.id_department=dd.id
      left join task_attribute_values on task.id=task_attribute_values.id_task
      left join meta_field mf on task_attribute_values.id_metafield=mf.id
      where (startdate between '01.09.2014' and '10.12.2014')
      and task_attribute_values.id_metafield in(133,134,136,137,146) and (dd.id between '1' and '20')
      group by dd.name, task_attribute_values.view_value_short,  mf.name
;
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826600
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainek,

left join везде понатыкан осознано?
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826606
wainek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
да
...
Рейтинг: 0 / 0
Преобразование строк в столбцы
    #38826612
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wainek,

т.е. столбец pod может быть null. Замечательно.

Попробуй вот так, хотя ваш запрос конечно чушь.

Код: sql
1.
2.
3.
4.
5.
6.
7.
select 
  pod, NAZVA
  MAX(case polya when 'Наши цены' then znach else null end) as "Наши цены",
  MAX(case polya when 'Наименование лота' then znach else null end) as "Наименование лота",
  MAX(case polya when 'Заказчик' then znach else null end) as "Заказчик"
from zayav
GROUP BY 1, 2
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование строк в столбцы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]