Выберите 1 поле из группы - PullRequest
       27

Выберите 1 поле из группы

0 голосов
/ 13 декабря 2018

У меня возникают проблемы при попытке получить 1 поле, чтобы вернуть 1 из группы полей Пример: это то, что я могу получить (используя внутреннее соединение между столбцами [Имя работы] и [Дверной стиль], оба набора данных по своей природесуществуют в разных таблицах)

-[Job Name],  [Door Style]
-Job1           Door Style1
-Job1           Door Style2 
-Job2           Door Style3
-Job2           Door Style4

То, что я хотел бы, это:

[Job Name],  [Door Style]
Job1           Door Style1 
Job2           Door Style3

Я пробовал несколько различных методов, чтобы достичь этого, мой текущий метод пытается повторить это ниже, потому что пересечениеприменить, кажется, не работает с тем, что я использую.(SQl в какой-то форме Access? Программное обеспечение - это Cabinet Vision)

https://social.msdn.microsoft.com/Forums/office/en-US/fcea9655-2db8-4d83-804d-e85250093b18/how-to-have-a-select-query-like-sql-server-cross-apply-query-in-msaccess?forum=accessdev

Если я правильно помню (на данный момент не перед компьютером с программным обеспечением, оно выдает мне сообщениеошибка типа «вы пытались выполнить запрос, который не включает указанную агрегатную функцию»

Таблица JobS, включает в себя внутреннее соединение между заданием и дверями и создает данные, подобные этому

[Job Name],  [Door Style]
Job1           Door Style1
Job1           Door Style2 
Job2           Door Style3
Job2           Door Style4

Будем весьма благодарны за любые отзывы об альтернативных методах или о том, что я могу упустить ниже. Спасибо!

SELECT JobS.[Job Name], JobS.[Door Name]

from JobS as JobS

inner join (

               select JobS1.JobS.[Job Name], max(JobS1.JobS.[Door Name]) as OneDoor

               from JobS as JobS1

               group by JobS1.[Job Name]) as Q1

on Q1.[Job Name] = JobS.[Job Name] and Q1.OneDoor = JobS.[Door Name]

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете использовать агрегат First для выбора первого значения:

SELECT JobS.[Job Name], First(JobS.[Door Name])

FROM JobS as JobS

GROUP BY  JobS.[Job Name]

Однако ваша попытка должна сработать, если вы вообще не используете подзапрос:

SELECT JobS.[Job Name], Max(JobS.[Door Name])

FROM JobS as JobS

GROUP BY  JobS.[Job Name]

Однако это вернет самое высокое значение в соответствии с порядком строк.

...