Прочие БД - [решено] MS Access: Сложный перевод строк таблицы в столбики

Ответить
Аватара пользователя
AlexK_UA

Прочие БД - [решено] MS Access: Сложный перевод строк таблицы в столбики

Сообщение AlexK_UA »

Доброго времени суток, посетители форума !



Для начала общая информация ... У нас компания где ведется учет моряков и пройденных ими курсов(курсы у нас же и проводятся), они получают сертификат, а мы фиксируем это в базу, таким образом - ФИО моряка, еще пару маловажных полей с общими данными и дальше столбики связанные с пройденными им курсами, Номер сертификата, столбик Название курса, дата начала курса, дата окончания, кол-во дней курса, последнее судно на момент прохождения того или иного курса, последнее звание, последний офис. Все это сделано в виде "вертикальной"таблицы, упрощенный вариант представлен ниже, т.е. в реальной таблице примерно 12 столбиков и несколько тысяч строк, при этом ФИО моряка может повторятся в зависимости от пройденных им курсов, исходя из таблицы-примера, Иванов прошел 3 курса и соответственно за ним 3 строки в базе (всего курсов в реальной базе порядка 29-30).





Код:

Код: Выделить всё

Name	CertN	LastVessel	CourseName
Ivanov	od001	Vessel1	         Course1
Ivanov	od001	Vessel2	         Course2
Ivanov	od002	Vessel2	         Course3
Petrov	od002	Vessel3	         Course1
Petrov	od003	Vessel3	         Course2
Petrov	od001	Vessel4	         Course3
Sidorov	od002	Vessel5	         Course2
Sidorov	od001	Vessel5	         Course4

Я только в общих чертах работал в Access, по-этому следующая задача для меня представляется довольно сложной, хотя немного поработал с несложными запросами и имею некоторое представление, а нужно сделать следующее... перевести данную таблицу в такой вид:





Код:

Код: Выделить всё

Name	Course1	LastVesselCourse1	Course2	LastVesselCourse2	Course3	LastVesselCourse3	Course4	LastVesselCourse4
Ivanov	od001	Vessel1	                 od001	Vessel2	                 od002	Vessel2		
Petrov	od002	Vessel3	                 od003	Vessel3	                 od001	Vessel4		
Sidorov			                 od002	Vessel5			                                  od001	Vessel5

Т.е. необходимо перевести таблицу грубо говоря к горизонтальному виду в которой у отдельно взятого моряка будет только 1 строчка в которой будут перечисляться все его курсы, а столбиками станут названия курсов и что самое сложное, в качестве информации в столбике курса будет отображаться номер сертификата при этом у каждого курса будет столбик с информацией по последнему судну, последнему офису, последнему званию, в данном примере я только судно показал для простоты. Так на вскидку должно таким образом получится более 100 столбиков в реальной таблице (29 курсов плюс 3-4 столбика к каждому курсу по данным о последнем судне и т.д. плюс общая информация, неск. столбиков). При этом особенность, номера сертификатов могут повторятся, так как это не абсолютные значения, номера сертификатов присваиваются как-то в зависимости от группы занимающихся.



В общем 2 вопроса:

1. Реально ли такое сделать в принципе ?

2. Если да, то могу ли я рассчитывать на помощь посетителей форума? Изображение
Аватара пользователя
AlexK_UA

Re: Прочие БД - [решено] MS Access: Сложный перевод строк таблицы в столбики

Сообщение AlexK_UA »

Iska, Спасибо большое, очень помогло, увы из-за относительно большой величины таблицы процесс перевода в нужный вид занимает не мало времени, но по крайней мере решение найдено Изображение
Аватара пользователя
AlexK_UA

Re: Прочие БД - [решено] MS Access: Сложный перевод строк таблицы в столбики

Сообщение AlexK_UA »

AlexK_UA, Вы посмотрите — может быть, Вас устроит и обычный отчёт вида строка-подтаблица-подтаблица, наподобие:



Код:

Код: Выделить всё

Name	CertN	LastVessel	CourseName
Ivanov	od001
			Vessel1
				Course1
			Vessel2
				Course2
				Course3
…

?
Аватара пользователя
AlexK_UA

Re: Прочие БД - [решено] MS Access: Сложный перевод строк таблицы в столбики

Сообщение AlexK_UA »

Iska, Нет, увы такое не очень подходит, просто сложность в том, что там надо делать довольно большое кол-во полей из значений и надо чтобы в одной строке был перечень всей информации по одному человеку. К сожалению перекрестный запрос не даёт возможность сделать всю большую таблицу одним махом, я решил просто делать Имя и плюс какое-то поле, потом получаю таблицу, экспортирую её допустим в эксель, затем беру другое поле с именем, опять формирую нужные мне поля при помощи ввода доп поля в исходной таблице с названиями будущих полей в новой таблице и получаю след небольшой перекрестный запрос, его так же экспортирую добавляю к той таблице, так сказать склеиваю и потом в итоге получится общая картинка широченная таблица на 120 где-то полей. В принципе меня это устраивает, главное я знаю что в итоге я сделаю это преобразование таблицы, другое дело, что может быть есть вариант с небольшим упрощением данного процесса, так как строк в таблице тысяча и приходится в этих доп полях вводить тысячу раз вписывать названия будущих полей, чтобы потом при преобразовании правильно отображало поля для нужных людей. Но опять таки результат хоть какой-то есть, если нету способа немного упростить жизнь, не страшно Изображение
Ответить

Вернуться в «Программирование и базы данных»