Доступ к многократной записи SQL-запроса к одной записи - PullRequest
0 голосов
/ 14 января 2019

У меня есть база данных MS Access с именем testdb, с именем таблицы table1.

В таблице есть 2 поля BinNo и Prodcode.

BinNo имеет много повторяющихся строк, и я хочу сгруппировать BinNo везде, где есть повторяющаяся строка, чтобы создать новый столбец псевдонимов (например, одну запись).

Учитывая следующие данные:

 +---------+----------+
 |  BinNo  | Prodcode |
 +---------+----------+
 | Bin no1 | Pro 1    |
 | Bin no1 | Pro 2    |
 | Bin no1 | Pro 3    |
 | Bin no2 | Pro 4    |
 | Bin no2 | Pro 5    |
 +---------+----------+

Вот желаемый результат:

 +---------+-----------+-----------+-----------+
 |  BinNo  | Prodcode1 | Prodcode2 | Prodcode3 |
 +---------+-----------+-----------+-----------+
 | Bin no1 | Pro 1     | Pro 2     | Pro 3     |
 | Bin no2 | Pro 4     | Pro 5     |           |
 +---------+-----------+-----------+-----------+

1 Ответ

0 голосов
/ 14 января 2019

ЭТО ОТВЕТЫ НА ОРИГИНАЛЬНУЮ ВЕРСИЮ ВОПРОСА.

Это действительно больно в MS Access. Вы можете сделать это с помощью условного агрегирования. Вот один из методов:

select t1.binno,
       max(iif(seqnum = 1, prodcode, null)) as prodcode_1,
       max(iif(seqnum = 2, prodcode, null)) as prodcode_2,
       max(iif(seqnum = 3, prodcode, null)) as prodcode_3
from (select t1.*,
             (select count(*)
              from table1 as tt1
              where tt1.binno = t1.binno and tt1.prodcode <= t1.prodcode
             ) as seqnum
      from table1 as t1
     ) as t1
group by t1.binno;

Подзапрос по сути реализует row_number(), который недоступен в MS Access.

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