Гость
Map
Форумы / Вопросы по IT [закрыт для гостей] / sql, xslt - вытянуть данные из таблицы в одну строку / 13 сообщений из 13, страница 1 из 1
24.04.2022, 16:18
    #22127
kiparis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Добрый день, уважаемые форумчане!

Подскажите, пожалуйста, как данные из таблицы можно "вытянуть" в строку да еще и по ячейкам, нетипично - см.вложение.
2022-04-24_16-04-21.png
1. на уровне sql - записать в одну строку через условный разделитель - функция list, можно потом как-нибудь разделить на ячейки в xslt?
2. на уровне xslt - есть ли какая-нибудь функция условно position, которая стартует с определенного числа, и в каждой новой ячейке в одной строке идет увеличение на единицу?

Если есть какие-нибудь мысли, буду очень благодарна!
...
Изменено: 24.04.2022, 16:20 - kiparis
Рейтинг: 0 / 0
24.04.2022, 17:27
    #22146
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis  24.04.2022, 16:18
[игнорируется]
Добрый день, уважаемые форумчане!

Подскажите, пожалуйста, как данные из таблицы можно "вытянуть" в строку да еще и по ячейкам, нетипично - см.вложение.
2022-04-24_16-04-21.png
1. на уровне sql - записать в одну строку через условный разделитель - функция list, можно потом как-нибудь разделить на ячейки в xslt?
2. на уровне xslt - есть ли какая-нибудь функция условно position, которая стартует с определенного числа, и в каждой новой ячейке в одной строке идет увеличение на единицу?

Если есть какие-нибудь мысли, буду очень благодарна!
По sql через pivot можно, если он есть
или через union all
а потом группировку
если число колонок заранее известно

По xslt это же язык шаблонов, тут можно разворачивать вывод не только по строкам но и по колонкам.
...
Рейтинг: 0 / 0
24.04.2022, 17:50
    #22163
kiparis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Спасибо, что откликнулись!
IT-Христ  24.04.2022, 17:27
[игнорируется]
По sql через pivot можно, если он есть
Увы, нет - firebird
IT-Христ  24.04.2022, 17:27
[игнорируется]
или через union all
а потом группировку
если число колонок заранее известно
Неизвестно, может быть сколько угодно, но точно знаю, что идет увеличение на 1
IT-Христ  24.04.2022, 17:27
[игнорируется]
По xslt это же язык шаблонов, тут можно разворачивать вывод не только по строкам но и по колонкам.
Вот мне бы как раз по строкам как раз сводную таблицу, но как?!
...
Изменено: 24.04.2022, 18:00 - kiparis
Рейтинг: 0 / 0
24.04.2022, 18:20
    #22178
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis  24.04.2022, 17:50
[игнорируется]
IT-Христ  24.04.2022, 17:27
[игнорируется]
По xslt это же язык шаблонов, тут можно разворачивать вывод не только по строкам но и по колонкам.
Вот мне бы как раз по строкам как раз сводную таблицу, но как?!
У вас есть таблица, полученная через sql запрос.
В цикле сделать такой же цикл, но в в отличие от обычного цикла, в первом проходе выдавать первую колонку(гне строку!). Во втором втором проходе вторую колонку. И так далее
У вас получится развернутая таблица.
...
Рейтинг: 0 / 0
25.04.2022, 09:39
    #22400
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis [игнорируется] 

В общем случае никак.
Всегда будут ограничения как минимум на длину "строки". Хотя вам в XML видимо надо выгрузить, а там в любом случае LOB объект надо будет использовать.
Что касается pivot и FB, то поищите, как там народ заменяет его. В общем случае это будет динамический SQL, раз неизвестно количество столбцов. Вот первое, что выдал гугл
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with tmp1(MyFieldName) as
(select distinct coalesce(t2.alternate_value, t1.Description)
 from table2 t2
 left join table1 t1 on t2.Table1ID = t1.id),
 tmp2(MyPivotSource) as
(select 'iif(coalesce(t2.alternate_value, t1.Description) = '''||MyFieldName||''', t2.MyValue, 0) as "'||MyFieldName||'"'
 from tmp1)
select 'select t2.id as "table1.id", '||list(MyPivotSource)||'from table2 t2
left join table1 t1 on t2.Table1ID = t1.id'
from rdb$database
cross join tmp2
Это отсюда
Но там опять таки 2.5, может в тройке что и иначе работает.
...
Рейтинг: 0 / 0
25.04.2022, 17:59
    #22642
Ханурик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis  24.04.2022, 16:18
[игнорируется]
2. на уровне xslt - есть ли какая-нибудь функция условно position, которая стартует с определенного числа, и в каждой новой ячейке в одной строке идет увеличение на единицу?
В xslt есть функция, которая именно так и называется - position(). Если перебираешь какое-то множество элементов - она каждый раз возвращает порядковый номер очередного элемента в этом множестве (нумерация, ЕМНИП, начинается с 1).

А как ее применить - зависит от того, что тебе надо получить:
- если просто счетчик элементов должен начинаться не с 1, а с некоторого N - тогда просто для счетчика используй выражение position() + N - 1
- если же надо перебирать элементы начиная не с первого, а с N-го - тогда внутри своего цикла, в котором перебираются элементы, можно добавить дополнительное условие: <xsl:if test="position() > N-1">...что-то сделать...</xsl:if>
...
Рейтинг: 0 / 0
06.05.2022, 19:17
    #30666
kiparis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Горбатый ёж [игнорируется] 

Снова здравствуйте!

Теперь количество столбцов известно - 10 штук! Нужно запрос преобразовать в строки с 10 столбцами!
Разбираюсь с with recursive - примеров оочень мало в сети!

Подскажите, кто знает как применить?
...
Рейтинг: 0 / 0
06.05.2022, 19:18
    #30669
kiparis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Ханурик [игнорируется] 

Мне нужно не просто пронумеровать, а в строки вытянуть, теперь в несколько строк - в каждой строке по 10 столбцов
...
Рейтинг: 0 / 0
06.05.2022, 19:22
    #30673
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis [игнорируется] 

Я давно с FB дела не имею и под руками его у меня нет. Приведённый пример из гугла на мой взгляд достаточен.
...
Рейтинг: 0 / 0
06.05.2022, 19:24
    #30677
kiparis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Горбатый ёж [игнорируется] 

Спасибо
...
Рейтинг: 0 / 0
07.05.2022, 08:28
    #30886
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
Можно сделать через жопу!
В нашей стране много чего так делается :)

Подключиться к ФБ из любой другой субд, умеющей pivot/unpivot/crossjoin и прочие няшки.
...
Изменено: 07.05.2022, 08:28 - eNose
Рейтинг: 0 / 0
11.05.2022, 12:35
    #33904
паразит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis  06.05.2022, 19:18
[игнорируется]
Ханурик [игнорируется] 

Мне нужно не просто пронумеровать, а в строки вытянуть, теперь в несколько строк - в каждой строке по 10 столбцов
читай про case, сделай его 10 раз и сверху сгруппируй
...
Рейтинг: 0 / 0
11.05.2022, 14:43
    #34046
Ханурик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql, xslt - вытянуть данные из таблицы в одну строку
kiparis  06.05.2022, 19:18
[игнорируется]
Ханурик [игнорируется] 

Мне нужно не просто пронумеровать, а в строки вытянуть, теперь в несколько строк - в каждой строке по 10 столбцов
Ну тогда уточняющие вопросы:

- данные вытянуть откуда? Поскольку на вход xslt подается xml - каким образом, какими элементами в этом xml данные представлены? Это просто последовательность однотипных элементов или что-то более сложное и структурированное?

- строки и столбцы записать куда? Какой формат должен получиться на выходе xlst и что в этом формате представляют собой "столбцы"? (например, если на выходе нужен html, то он может содержать разметку для таблицы со столбцами. Или нужно что-то другое?)
...
Рейтинг: 0 / 0
Форумы / Вопросы по IT [закрыт для гостей] / sql, xslt - вытянуть данные из таблицы в одну строку / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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