#sql #ms-access-2007
#sql #ms-access-2007
Вопрос:
Я хочу выбрать всю первую строку каждой записи, где промо-код уникален. Я пытаюсь создать таблицу образцов, в этой таблице будет одна запись (первая запись) из каждого отдельного промо-кода. Я спросил всех своих коллег, и они обычно просматривают данные вручную и выбирают по одному из каждого. проблема в том, что количество промо-кодов растет каждый раз, и коды меняются. итак, я хочу написать запрос, который выберет первую найденную запись, содержащую каждый отдельный код. итак, для меня есть что-то вроде этого:
SELECT DISTINCT Customer.promo1 FROM Customer AS promo;
SELECT * FROM Customer, promo
WHERE Customer.promo1 = promo.promo1;
Но это, очевидно, дает исходную таблицу. У меня есть поле идентификатора, называемое AutoID в Customer.
Заранее спасибо.
Ответ №1:
Я предполагаю, что вы хотите первого клиента.Автоматический поиск, связанный с каждым клиентом.Промо
SELECT
c.*
FROM
Customer c
INNER JOIN
(
SELECT
c.promo1,
MIN(c.AutoID) AutoID
FROM
Customer c
GROUP BY
c.promo1) FirstCusomterWithPromo
ON c.AutoID = FirstCusomterWithPromo.AutoID
Комментарии:
1. распознает ли access 2007 функцию MIN()?
2. @Kyle Да, вот список агрегатных функций, поддерживаемых Access SQL
Ответ №2:
Что-то вроде этого:
SELECT * FROM Customer
GROUP BY Customer.promo1
Комментарии:
1. Доступ, подобный большинству баз данных (MySQL является заметным исключением), не позволит вам написать группу подобным образом. Вам нужно будет включить любое неагрегированное поле в предложение group by. Я также почти уверен, что это не то, чего хотел OP.
2. Вы не так уверены, если решили прокомментировать мой ответ, чтобы защитить свой 😉