2015-05-12 2 views
2

У меня есть запрос, который я пытаюсь отфильтровать для отчета. Каждый адресID может иметь несколько заданий, и каждое задание может иметь несколько элементов.Подзапрос для максимальных идентификационных номеров

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

текущие результаты запроса:

+-----------+-------+--------+ 
| AddressID | JobID | Cost | 
+-----------+-------+--------+ 
| 326  | 328 | £52.50 | 
| 327  | 329 | £55.13 | 
| 328  | 330 | £57.88 | 
| 329  | 331 | £60.78 | 
| 329  | 331 | £63.81 | 
| 330  | 332 | £67.00 | 
| 330  | 332 | £70.36 | 
| 330  | 332 | £73.87 | 
| 330  | 332 | £77.57 | 
| 330  | 333 | £57.75 | 
| 330  | 333 | £60.64 | 
| 330  | 333 | £63.67 | 
| 330  | 333 | £66.85 | 
| 331  | 334 | £70.20 | 
| 331  | 334 | £73.71 | 
| 331  | 335 | £77.39 | 
| 331  | 336 | £81.26 | 
| 331  | 336 | £85.32 | 
| 331  | 336 | £89.59 | 
+-----------+-------+--------+

И я пытаюсь получить:

+-----------+-------+--------+ 
| AddressID | JobID | Cost | 
+-----------+-------+--------+ 
| 326  | 328 | £52.50 | 
| 327  | 329 | £55.13 | 
| 328  | 330 | £57.88 | 
| 329  | 331 | £60.78 | 
| 329  | 331 | £63.81 | 
| 330  | 333 | £57.75 | 
| 330  | 333 | £60.64 | 
| 330  | 333 | £63.67 | 
| 330  | 333 | £66.85 | 
| 331  | 336 | £81.26 | 
| 331  | 336 | £85.32 | 
| 331  | 336 | £89.59 | 
+-----------+-------+--------+

Я смотрел на SELECT, TOP 1 изолировать MAX JobId, но в конечном итоге ограничивая запросить только 1 запись.

В настоящее время настройки этого подзапрос, но до сих пор не уверен, что я на правильном пути:

(SELECT Max(vusearch.JobID) FROM vuSearch AS T WHERE PAID = vuSearch.AddressID GROUP BY AddressID) 

Может кто-нибудь посоветовать?

ответ

3

Вот один метод:

select v.* 
from vusearch as v 
where v.JobId = (select max(v2.JobId) 
       from vusearch as v2 
       where v2.AddressId = v.AddressId 
       ); 
+0

Спасибо за это Гордон. Будет ли это использоваться в качестве подзапроса в JobID в представлении дизайна? Я получаю сообщение об ошибке «Вы написали подзапрос, который может возвращать более одного поля, не используя зарезервированное слово EXISTS в предложении FROM запроса запроса. Результируйте инструкцию SELECT подзапроса, чтобы запросить только одно поле. –

+0

@GlibGibon. , , Подзапрос, как написано, возвращает одну строку (потому что это запрос агрегации без 'group by') и имеет только одно поле. Эта ошибка не имеет смысла. –

+0

Я проверил и перепроверял. Я использую Access2013. Подзапрос, который я помещаю в раздел критериев поля JobID. Когда я смотрю на представление SQL, код находится в конце запроса (в предложении where). Я помещаю это в нужное место? Объединение в основной запрос не повлияло бы на это, поскольку я рассматриваю только одну таблицу? –

1

Успели получить установленное - я, вероятно, не предоставили достаточно информации, как я пытался сохранить мое объяснение простое.

Большое спасибо за вашу помощь Гордон

((vuSearch.PDID) IN ((SELECT Max (v2.PDID) FROM vuSearch AS v2 GROUP BY v2.PAID)))

Смежные вопросы