Выберите первый из подзапросов внутреннего соединения

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

@getEndDate = SELECT c.CustomerId, c.ProductId FROM @customer AS c
INNER JOIN (SELECT (DateTime?) EndDate AS EndDate, (int) CustomerId AS CustomerId 
FROM @Installation 
ORDER BY EndDate FETCH 1 ROW OFFSET 0 ROWS) AS i ON c.CustomerId == i.CustomerId

Делая это, я получаю самую низкую EndDate EndDate в @Installation, где выполняется требование присоединения.

Как я могу получить только первое значение из подзапроса внутреннего соединения для каждого успешного соединения?


person Refi    schedule 23.10.2018    source источник


Ответы (2)


Вы можете применить функцию FIRST_VALUE к INNER JOIN SELECT:

Проверьте это: https://docs.microsoft.com/en-us/u-sql/functions/analytic/first-value

person Jorge Ribeiro    schedule 25.10.2018
comment
Замечательно! Не знаю, почему я не нашел эту документацию. Спасибо. - person Refi; 26.10.2018

Решил сделать следующее во внутреннем подзапросе соединения:

(SELECT (DateTime?) MAX(EndDate) AS EndDate, (int) CustomerID AS CustomerID FROM 
@Installation GROUP BY CustomerID) 

Работает для моего случая.

person Refi    schedule 23.10.2018