"Транспонирование" таблицы

Казанский Сергей

Доброго времени суток.Есть следующая таблица:
Сергей
Возможно ли составить запрос, чтобы результат выглядел:
Поля
Очень выручите
14 ответов

Казанский Сергей

перекрестный запрос (crosstab query)AFAIK


Казанский Сергей

перекрестный запрос (crosstab query)AFAIK
нее, ТС вроде бы как наоборот - UNPIVOT нужен ...---
select 'Сергей' as Поля, [Сергей] as Значение
from [Есть следующая таблица:]

union all

select 'Саша' as Поля, [Саша] as Значение
from [Есть следующая таблица:]


Казанский Сергей

ая начал думать типа про декартово....с дичайшим Уважением - qwerty112


Казанский Сергей

qwerty112,Большое спасибо, но если бы решить одним запросом, количество полей большое. Помимо того есть таблица в помощь, в которой перечислены имена полей исходной таблицы. Вот если бы одним запросом. А так, действительно, похоже на перекрестный запрос, только наоборот.


Казанский Сергей

qwerty112,Большое спасибо, но если бы решить одним запросом, количество полей большое. Помимо того есть таблица в помощь, в которой перечислены имена полей исходной таблицы. Вот если бы одним запросом. А так, действительно, похоже на перекрестный запрос, только наоборот.
Чтобы не усложнять себе жизнь, надо быстро-быстро переделать таблицу.


Казанский Сергей

Rivkin Dmitry,Спасибо, но таких таблиц десятки. Идея в том, чтоб в таблице кроме исходных данных хранились и расчетные (ключевые) данные. Т.е последователую выборку ключевых данных можно было бы горизонтально занести в таблицу, потом также извлечь.


Казанский Сергей

Rivkin Dmitry,PIVOT и UNPIVOT идеально бы подошли, но у меня не получилось в Accesse их использовать. У кого-нибудь есть пример в Accesse, может я ошибаюсь в синтаксисе


Казанский Сергей

Rivkin Dmitry,Спасибо, но таких таблиц десятки. Идея в том, чтоб в таблице кроме исходных данных хранились и расчетные (ключевые) данные. Т.е последователую выборку ключевых данных можно было бы горизонтально занести в таблицу, потом также извлечь.
значит - переделать "десятки таблиц">> Идея в том, чтоб в таблице кроме исходных данных хранились и расчетные (ключевые) данные"идея" - форменное "кю"то, что можно расчитать - хранить не нужно (во всяком случае, пока мы говорим об Акцессе)


Казанский Сергей

Rivkin Dmitry,PIVOT и UNPIVOT идеально бы подошли, но у меня не получилось в Accesse их использовать. У кого-нибудь есть пример в Accesse, может я ошибаюсь в синтаксисе
PIVOT - в Акцессе есть, в поиск по-форуму / хелпу по TRANSFORMно он тут (в исх.постановке задачи) никак не поможетUNPIVOT - нет, он конструируется через union как ? - я показал ... в чём проблема-то ?


Казанский Сергей

qwerty112,Спасибо за ответ. Я вероятно не доконца уточнил "Идею". Хранить расчетные данные желательно по двум причинам:1. Изменение ключевых параметров в ручную. В ряде случаев приходится отступать от правил по которому выполняется запрос. Например: опираясь на таблицу Мощности дигателей и соответствующие им силовые аппараты (Выключатель, контактор, провод и т.д.) UPDATE -ом можно заполнить ключевые поля таблицы Оборудования, при этом остается возможность выбрать другой номинал вручную.2. Есть возможность выбрать другого производителя элементной базы и, следовательно, получить другую спецификацию, опираясь на ключевые параметры в таблице Оборудования и Базы элементов.Можно было бы добавить таблицу ключевых параметров, связанную с таблицей Оборудования один ко многим. Но аналогичных таблиц много, да и на картинке отобразить ключевые параметры сложнее, чем если бы они были в одной записи. Поэтому пытаюсь придумать механизм хранения промежуточной информации, указывая в какие поля таблицы с запроса необходимо сохранять информацию, ну и также извлекать.Еще раз спасибо всем кто откликнулся, может кто подскажет как это реализовать на VBA.


Казанский Сергей

может кто подскажет как это реализовать на VBA.
cкачать


Казанский Сергей

?????,Невероятно, как быстро. Огромнейшее спасибо. Жаль я так не умею).Еще раз спасибо!!!


Казанский Сергей

?????,Невероятно, как быстро. Огромнейшее спасибо. Жаль я так не умею).Еще раз спасибо!!!
Но лучше так, как рекомендовал qwerty
Public Function DoIt2()
 CurrentDb.QueryDefs("q").SQL = strFormatSQL
 DoCmd.OpenQuery "q"
End Function

Public Function strFormatSQL()
 Dim s$, ss$, s1$, s2$
 Dim f As DAO.Field
 Dim t As DAO.TableDef
 Dim db As DAO.Database
 
 s = "select # as Who, @ as What from t union all " & vbCrLf
 
 Set db = CurrentDb
 Set t = db.TableDefs("t")
 
 For Each f In t.Fields
 s1 = Replace(s, "#", "'" & f.Name & "'")
 s2 = Replace(s1, "@", "[" & f.Name & "]")
 ss = ss & s2
 Next f
 strFormatSQL = Left(ss, InStrRev(ss, "union all") - 1)
End Function


Казанский Сергей

Казанский Сергей......1. Изменение ключевых параметров в ручную....
имжотолько на стадии проектированияа иначе - в недалеком будущем - проблены - беда...13696640"идея" - форменное "кю" (с)13701968