Как вернуть динамическую таблицу с Max Date - PullRequest
1 голос
/ 09 мая 2019

Я веду журнал, в котором я ввожу Задание, Описание, Код TC, Единицы, Запрошенная дата и Запрашивающая сторона. Отсюда мне нужно вернуть каждое задание, а также каждый отдельный код TC (который будет продолжать расти) и остальную информацию, где запрашиваемая дата является максимальной датой.

EX Журнал:

Job  Desc  TC CODE  Units   Date     Rqstr
17   MCD    Days     5     4/1/19    Fred
20   BK     Days     10    4/1/19    John
17   MCD    Crew     8     4/2/19    Bob
33   WEN    Days     10    4/1/19    Dave
40   ARB    Crew     7     4/3/19    Jim
40   ARB    Hours    10    4/3/19    Jim
17   MCD    Days     10    4/5/19    Tim
17   MCD    Con      5     4/5/19    Tim
20   BK     Days     8     4/8/19    Tye
20   BK     Crew     3     4/8/19    Tye
17   MCD    Crew     5     4/8/19    Tim

Я попробовал номер строки, но я не могу разделить код TC, потому что мне нужен каждый отдельный код для каждой работы. Секционирование будет возвращать только отдельные коды TC и перечислять задания, в которых дата является максимальной датой

select [Job],
  [Description],
  [TC Code],
  [Units],
  [Date Requested],
  [Requestor]

from (Select [Job],
  [Description],
  [TC Code],
  [Units],
  [Date Requested],
  [Requestor],
       row_number() over(partition by [TC Code] order by [Date Requested] 
desc) as rn
  from [dbo].['VAR ADJ Log$']) as t

where rn = 1      

Результат, который мне нужен:

Мне нужно возвращать каждый отдельный код ТС с самой поздней датой для каждой работы. Как вы можете видеть на задании 17, был добавлен и добавлен новый код TC, а код экипажа TC был заменен самым последним.

Job  Desc  TC CODE  Units   Date     Rqstr
17   MCD    Days     10    4/5/19    Tim
17   MCD    Crew     5     4/8/19    Tim
17   MCD    Con      5     4/5/19    Tim
20   BK     Days     8     4/8/19    Tye
20   BK     Crew     3     4/8/19    Tye 
33   WEN    Days     10    4/1/19    Dave
40   ARB    Crew     7     4/3/19    Jim
40   ARB    Hours    10    4/3/19    Jim

1 Ответ

0 голосов
/ 09 мая 2019

Это то, что вы хотите?

select val.*
from [dbo].['VAR ADJ Log$'] val
where val.date = (select max(val2.date)
                  from [dbo].['VAR ADJ Log$'] val2
                  where val2.job = val.job and val2.[TC Code] = val2.[TC Code]
                 );

Вы также можете сделать это с помощью оконных функций (хотя, вероятно, нет особого преимущества). Кажется, это та логика, которую вы просите.

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