Как мне присоединиться к таблице и отобразить столбец на основе новейшей даты и условия в двух других столбцах? - PullRequest
2 голосов
/ 12 апреля 2019

Я пытаюсь объединить две таблицы по их customerID.У меня есть таблица информации о клиенте и таблица информации о покупке.В объединенной таблице я хочу, чтобы в столбце отображалась самая свежая информация о покупках для этого клиента.Однако некоторые клиенты еще не совершили покупку ... Я хочу, чтобы это поле оставалось пустым или пустым.Кроме того, я хочу показывать только покупки типа A, а не покупки типа B.

Я нашел решение для отображения последней записи, но я не могу заставить его отображать ноль, если у его клиента нет записи (он просто удаляет этого клиента из таблицы присоединения вместо того, чтобы оставитьпустое поле ... независимо от типа соединения):

SELECT c.*, p1.*
FROM customer c
JOIN purchase p1 ON (c.id = p1.customer_id)
LEFT OUTER JOIN purchase p2 ON (c.id = p2.customer_id AND 
    (p1.date < p2.date OR p1.date = p2.date AND p1.id < p2.id))
WHERE p2.id IS NULL and p2.purchase_Type = 'A';

Допустим, мои поля:1007 * Я хочу, чтобы моя таблица присоединения отображала: customer_ID, Customer_Name, purchase_Price (самые последние), purchase_Notes (самые последние)

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

1 Ответ

0 голосов
/ 12 апреля 2019

Использовать оконные функции или apply.Последний:

SELECT c.*, p.*
FROM customer c OUTER APPLY
     (SELECT TOP (1) p.*
      FROM purchase p 
      WHERE p.customer_id = c.id and p.type = 'A'
      ORDER BY date DESC
     ) p;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...