0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 5

Как преобразовать данные в одну строку

16.05.2014, 15:58. Показов 2918. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Таблица с данными.

Поле1 Поле2
1 1а
1 2в
1 6д
2 7г
2 0ж
3 9х

Данные в Поле2 могут быть в произвольном порядке.


Необходимо преобразовать данные сортирую по убыванию строку ПолеХ и получить в результате:

Поле1 ПолеХ
1 6д 2в 1а
2 7г 0ж
3

Как это можно сделать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2014, 15:58
Ответы с готовыми решениями:

Как уместить эти данные в одну строку??
Добрый день Не подскажете как уместить имеющиеся данные в одну строку То есть имеются значения в двух столбцах- которые меняются по...

Как объединить данные из разных столбцов в одну строку?
добрый день, кто может подсказать, как объединить данные из разных столбцов в одну строку? есть представление, созданное из запроса select...

Как вывести данные в консоль в одну строку с задержкой?
Недавно начал изучать C# Хотелось бы узнать как вывести данные в одну строку с задержкой? Допустим вывести сообщение...

11
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
16.05.2014, 16:05
Посмотрите здесь Импорт текстовых файлов в таблицы Access через VBA.
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
16.05.2014, 16:23
Это в общий модуль.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function concstr(sfield) As String
Dim rs As Object, s As String
Set rs = CurrentDb.OpenRecordset("Таблица")
 
concstr = ""
rs.MoveFirst
Do While Not rs.EOF
   If rs!Поле1 = sfield Then concstr = concstr & " " & rs!Поле2
   rs.MoveNext
Loop
 
Set rs = Nothing
End Function

Использовать:
SQL
1
SELECT DISTINCT Таблица.Поле1, concstr(Поле1) AS ПолеX FROM Таблица;
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 5
16.05.2014, 17:15  [ТС]
Получился следующий результат.
Поле1 ПолеX
1 1а 2в 6д
2 7г 0ж
3 9х

Спасибо, Agapov_stas


Подскажите, кто знает, как получить результат в следующем виде (значения в поле ПолеХ выводятся по убыванию):
Поле1 ПолеХ
1 6д 2в 1а
2 7г 0ж
3
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
16.05.2014, 17:19
сколько у вас примерно строк в таблице
100-1000-10000-100000

лимитирует ли время
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
16.05.2014, 17:23
Цитата Сообщение от 1900 Посмотреть сообщение
(значения в поле ПолеХ выводятся по убыванию
Не увидел закономерности..
Может Вы имели ввиду?:
Поле1 ПолеХ
1 6д 2в 1а
2 0ж 7г
3 9х
Тогда получится только при условии, что есть еще одно поле-счетчик, и пользоваться ORDER BY.
0
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.05.2014, 17:40
Можно использовать сортировку такого вида в запросе
SQL
1
ORDER BY Поле1, Val(Поле2) DESC, REPLACE(Поле2,Val(Поле2),"") DESC
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 5
16.05.2014, 18:16  [ТС]
около 30000

время не сильно лимитирует

Добавлено через 7 минут
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Может Вы имели ввиду?:
Поле1 ПолеХ
1 6д 2в 1а
2 0ж 7г
3 9х
результат получился именно такой
Поле1 ПолеX
1 1а 2в 6д
2 7г 0ж
3 9х

просто в таблице сначала идет запись 2 7г потом 2 0ж - поэтому тут получилось правильно (по убыванию чисел перед буквами), а вот в первой строке все наоборот.

добавил:
Поле1 Поле2
1 1а
1 2в
1 6д
2 7г
2 0ж
3 9х
4 50ч
4 99ч
4 0з

результат должен иметь вид:
Поле1 ПолеХ
1 6д 2в 1а в порядке убывания
2 7г 0ж в порядке убывания
3 9х
4 99ч 50ч 0з в порядке убывания
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 5
19.05.2014, 13:50  [ТС]
Сделал следующим образом
<censored>


SQL
1
2
3
SELECT поле1, LAST(UnionStr1(поле1,поле2)) AS ПолеX FROM 
(SELECT TOP 100 Percent поле1,поле2 FROM тест ORDER BY поле1,поле2 DESC)
GROUP BY поле1
Visual Basic
1
2
3
4
5
6
7
8
9
10
Public Function UnionStr1(ID, Fam)
 Static IDOld, FamUnion
If IDOld <> ID Then
 IDOld = ID
 FamUnion = Null
End If
 
 FamUnion = (FamUnion + ", ") & Fam
 UnionStr1 = FamUnion
End Function
0
2 / 2 / 1
Регистрация: 06.01.2014
Сообщений: 115
19.05.2014, 14:18
В продолжении этой темы...
Мне тоже нужно было объединить значения одного столбца в строку в запросе.
Использовал этот же код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Public Function UnionStr1(ID, Fam)
 Static IDOld, FamUnion
If IDOld <> ID Then
 IDOld = ID
 FamUnion = Null
End If
 
 FamUnion = (FamUnion + ", ") & Fam
 UnionStr1 = FamUnion
End Function
но получил ограничение в 255 символов. Не подскажите, как это обойти?
И ещё, в таблице есть повторяющиеся значения, можно как-то исключить повторения?

И с сортировкой у меня не вышло...
Вложения
Тип файла: rar bb.rar (71.2 Кб, 19 просмотров)
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
20.05.2014, 07:26
Лучший ответ Сообщение было отмечено alvk как решение

Решение

Цитата Сообщение от Valimar Посмотреть сообщение
получил ограничение в 255 символов. Не подскажите, как это обойти?
И ещё, в таблице есть повторяющиеся значения, можно как-то исключить повторения?
И с сортировкой у меня не вышло...
Пробуйте так:
запрос
SQL
1
2
3
SELECT Название, fnSumString(КодКолонны) AS [Гаражные номера]
FROM Колонны
ORDER BY Название
где fnSumString - функция в общем модуле
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function fnSumString$(KodKol&)
Dim s$, rst As ADODB.Recordset
  Set rst = New ADODB.Recordset
  s = "SELECT DISTINCT [№ А/М] FROM Данные WHERE Автоколонна=" & KodKol & " ORDER BY [№ А/М]"
  rst.Open s, CurrentProject.Connection, adOpenKeyset
  If Not rst.EOF Then
    fnSumString = rst.GetString(adClipString, , "", ", ", "")
    fnSumString = Left(fnSumString, Len(fnSumString) - 2)
  End If
  rst.close: Set rst = Nothing
End Function
2
2 / 2 / 1
Регистрация: 06.01.2014
Сообщений: 115
20.05.2014, 08:34
minob, да здорово все работает ) спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2014, 08:34
Помогаю со студенческими работами здесь

Как данные таблицы преобразовать в строку в новом окне
Добрый день, прошу специалистов помочь мне, так как совсем чайник. У меня есть форма в html, которая заполняется в ручную, затем для...

Преобразовать формулу (описать ее кодом в одну строку)
помогите записать формулу в одну строку, сам вот по отдельности сделал, а в одну строку не получается y:= y_otc/y_baz; i_vvp:=...

Как сделать так чтобы в поле Наименование данные выбранные из остальных трех полей собирались в одну строку?
Привет! Есть такой вопрос: В справочнике Сотрудники в реквизитах есть четыре поля: Наименование; Подразделение; Должность; ФизическоеЛицо....

Преобразовать числа в две строки, объединить их в одну строку и вывести на экран результат
ввести 2 целых числа.преобразовать числа в две строки,объединить их в одну строку и вывести на экран результат. Решите задачу плиз)))

Добавить данные в одну строку
Есть запрос SELECT Number, Description FROM Test Выводит таблицу такого вида Number | Description 65232 | Test1 65232 | Test2 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru