Access Select Max date с соответствующими записями - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать запрос, который просматривает самую последнюю дату и возвращает соответствующие значения. Использование функции max работает, только если у меня есть столбцы hose part no и max inspection и больше ничего. После добавления в столбцы scrap amount он дублирует столбец hose part no. Я хочу только одну запись на номер детали шланга. Ниже приведен пример того, что происходит.

Hose Part No Max Inspection Date scrapamt1 scrapamt2 scrapamt3 scrapamt4

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Похоже, что работает -

tblReleaseNo:

| Release No | Hose Part No | Release Date | Due Date   |
|------------|--------------|--------------|------------|
| 1          | Hose 1       | 01/01/2018   | 01/01/2018 |
| 2          | Hose 1       | 01/01/2018   | 01/01/2018 |
| 3          | Hose 2       | 01/01/2018   | 01/01/2018 |
| 4          | Hose 2       | 01/01/2018   | 01/01/2018 |
| 5          | Hose 3       | 01/01/2018   | 01/01/2018 |  

NewScrapTble:

| Release No | Inspect Date | scrapamt1 | reason1 | scrapamt2 |
|------------|--------------|-----------|---------|-----------|
| 1          | 01/12/2018   | 10        |         | 15        |
| 2          | 12/12/2018   | 15        |         | 18        |
| 3          | 01/07/2018   | 12        |         | 12        |
| 4          | 01/08/2018   | 14        |         | 200       |
| 5          | 01/03/2017   | 22        |         | 20        |  

SQL:

SELECT  [Hose Part No]
        , MAX([Inspect Date]) AS Inspect
        , LAST(scrapamt1) AS Amount1
        , LAST(scrapamt2) AS Amount2
FROM    (
        SELECT  [Hose Part No]
                , [Inspect Date]
                , scrapamt1
                , scrapamt2
        FROM    tblReleaseNo INNER JOIN NewScrapTble ON 
                    tblReleaseNo.[Release No] = NewScrapTble.[Release No]
        )
GROUP BY [Hose Part No]  

Финальный стол:

| Hose Part No | Inspect    | Amount1 | Amount2 |
|--------------|------------|---------|---------|
| Hose 1       | 12/12/2018 | 15      | 18      |
| Hose 2       | 01/08/2018 | 14      | 200     |
| Hose 3       | 01/03/2017 | 22      | 20      |  

Примечание: Я не уверен на 100%, что LAST правильно, он тянет правильные суммы, но не уверен, что он будет срабатывать на некоторых записях?

0 голосов
/ 09 ноября 2018

Если я правильно вас понял, это то, что вы хотите:

Select * From Table1 Inner Join
(Select Table1.[Hose Part No], Max(Table1.[Max Inspection Date]) As [MaxOfMax Inspection Date] From Table1 Group By Table1.[Hose Part No]) As MaxValues
On Table1.[Hose Part No] = MaxValues.[Hose Part No] And Table1.[Max Inspection Date] = MaxValues.[MaxOfMax Inspection Date]

Подзапрос (с именем MaxValues) используется для определения максимального значения Max Inspection Date на Hose Part No и будет присоединен к той же таблице.

Поскольку вы также не упомянули имя таблицы, я выбрал Table1.

...