SQL - случай, когда продукт существует, заполните его соответствующее значение для всех строк в разделе - PullRequest
0 голосов
/ 10 июля 2019

У меня есть что-то вроде следующего месячного набора данных.

У меня есть продукт, идентификатор компании, дата и количество. Компания (обозначается идентификатором компании) может купить несколько продуктов. Я хочу создать новый столбец, в котором будет указано количество товара «С», если компания покупает в месяц по каждой позиции. Если продукт «C» не куплен, верните 0.

Product Company_ID  Date    Quantity    Desired_Calculated_Column
  A     1         5/1/2019    100                      300
  B     1         5/1/2019    200                      300
  C     1         5/1/2019    300                      300
  A     2         6/1/2019    150                      125
  B     2         6/1/2019    250                      125
  C     2         6/1/2019    125                      125
  A     3         7/1/2019    175                       0
  B     3         7/1/2019    275                       0

Я пытался разделить данные на основе идентификатора продукта и компании. Я пытался использовать LAST_VALUE, но не увенчался успехом.

LAST_VALUE(quantity) OVER (PARTITION BY Date, Company_ID 
                           ORDER BY product_group  
                          ) AS Desired_Calculated_Column

1 Ответ

0 голосов
/ 10 июля 2019

Вы не хотите last_value().Вы можете использовать условное агрегирование, предполагая, что 'C' встречается один раз на группу:

MAX(CASE WHEN product_group = 'C' THEN quantity ELSE 0 END) OVER
    (PARTITION BY Date, Company_ID) AS C_quantity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...