Как объединить строки в MS Access? - PullRequest
1 голос
/ 14 сентября 2009

У меня есть таблица с такими записями в MS Access:

ID  field2  field3  field4  field5
1   345       asr
2             ase     567    788
3   456       ghy
4             jki     568    899
5   235       yui
6             hju     456    456

Я хочу объединить его, чтобы получить таблицу, подобную этой:

ID      field2  field3  field4  field5
1           345 asrase     567    788
3           456 ghyjki     568    899
5           235 yuihju     456    456

Возможно ли это с запросами?

Ответы [ 4 ]

1 голос
/ 14 сентября 2009

Предполагая, что строки продолжаются, как в примере, этот запрос будет делать:

select a.id, 
    a.field2, 
    a.field3 + Iif(IsNull(b.field3),'',b.field3), 
    b.field4, 
    b.field5
from table1 a
left join table1 b on b.id = a.id + 1
where a.field2 is not null

Он присоединяется к таблице сам, ища следующий ряд. Объединяет обе строки для получения желаемого результата.

0 голосов
/ 15 сентября 2009

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

Я хотел бы узнать больше о данных в Field3, т. Е. О том, имеют ли они смысл.

0 голосов
/ 14 сентября 2009

Я немного изменил подход к Andomar и использовал функцию мода для возврата четных строк.

SELECT a.id, a.field2, a.field3 + IIF(b.field3 IS NULL,'', b.field3), 
       b.field4, b.field5
  FROM Table1 AS a
       INNER JOIN Table1 AS b 
          ON a.ID = b.ID + 1
 WHERE Table1_1.ID MOD 2 = 0;
0 голосов
/ 14 сентября 2009

Я думаю, что вы, вероятно, можете. Судя по строкам вашего примера, вы хотите, чтобы каждая «четная» и «нечетная» строки сливались вместе четко определенным образом.

С такой проблемой, если вы не знаете способ, я бы начал использовать редактор запросов, чтобы поиграть. Например, можете ли вы создать запрос, который вычисляет псевдо-идентификатор 1/2-го фактического идентификатора? Я думаю, что вы можете, и это позволит вам получить общий идентификатор, чтобы связать 2 поля с.

Но есть и другие способы связать два поля. Вы можете объединить таблицу с самой собой, выбрав первую версию как версию с ненулевым полем 4 (или 5), а вторую, где идентификатор совпадает с идентификатором первого -1.

Если вы используете метод идентификатора 1/2 ID, который я предложил вначале, проще всего создать 1 запрос, чтобы получить «четные», а другой - «нечетные» строки. Затем вы просто объединяете два запроса в третий.

Если у вас есть решение, вы можете обойти его и попробовать другие вещи.

Я бы начал с игры в редакторе запросов, а затем посмотрел на SQL, когда вы закончите.

PS: Я уверен, что смогу написать для вас ваш ответ, но какое удовольствие вы тогда получите? ; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...