powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL запрос с транспонированием
8 сообщений из 8, страница 1 из 1
SQL запрос с транспонированием
    #39382631
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!

Есть таблица emp
с числовыми полями U1, F1 и полем DT (дата), см скриншот.

нужно составить SQL-запрос так, чтобы значения столбца DT для записей каждой из пар U1, F1 транспонировались бы в строку с динамическим добавлением полей DT (DT_1, DT_2 ... DT_N), в результате должна получиться таблица result как на скриншоте.

пробовал смотреть в сторону Pivot, но пока не очень получается.
Подскажите пожалуйста как такое написать!
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382647
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miko_v,

но это же максимум 255 полей
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382668
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала воспользуйтесь поиском и найдите, как при группировке получить конкатенацию поля зля записей группы. Напишите запрос.
Потом найдите, как из такого CSV-текста выделять группу с заданным номером. А также - как создать синтетическую таблицу чисел. Объединив это, поделите CSV-поле на отдельные куски и распихайте по полям.

Но ещё лучше, если всей этой ерундой займётся клиент - ибо это всё нереляционно.
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382686
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miko_v,

два запроса и модуль
U1F1dt_1dt_3dt_512505.01.201709.01.201712611.01.201732704.01.201732803.01.201732901.01.201702.01.201711.01.2017
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382761
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

спасибо большое за советы, буду думать
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382764
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАMiko_v,

два запроса и модуль
U1F1dt_1dt_3dt_512505.01.201709.01.201712611.01.201732704.01.201732803.01.201732901.01.201702.01.201711.01.2017

очень элегантное решение, спасибо Вам больше! по-моему, это то что нужно!
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382937
Miko_v, ещё такой вариант (одним запросом)
Код: sql
1.
2.
3.
4.
5.
6.
TRANSFORM First(DT)
SELECT U1, F1
FROM emp
GROUP BY U1, F1
PIVOT "DT_" & Format(DCount("*","emp","U1=" & U1 & " And F1=" & F1 & 
      " And DT<=" & Format(DT,"\#mm\/dd\/yyyy\#")),"000")


Предполагается, что совокупность полей U1, F1, DT уникальна. Если это не так, то нужно таблицу emp пополнить полем типа счётчик (см. у ПЕНСИОНЕРКА поле Код) и несколько изменить в запросе условие для DCount.
...
Рейтинг: 0 / 0
SQL запрос с транспонированием
    #39382954
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Практикант-Miko_v, ещё такой вариант (одним запросом)
Код: sql
1.
2.
3.
4.
5.
6.
TRANSFORM First(DT)
SELECT U1, F1
FROM emp
GROUP BY U1, F1
PIVOT "DT_" & Format(DCount("*","emp","U1=" & U1 & " And F1=" & F1 & 
      " And DT<=" & Format(DT,"\#mm\/dd\/yyyy\#")),"000")


Предполагается, что совокупность полей U1, F1, DT уникальна. Если это не так, то нужно таблицу emp пополнить полем типа счётчик (см. у ПЕНСИОНЕРКА поле Код) и несколько изменить в запросе условие для DCount.

это наверное самое подходящее решение, спасибо Вам большое!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL запрос с транспонированием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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