Проблема SQL: запрос - PullRequest
       3

Проблема SQL: запрос

1 голос
/ 13 сентября 2011

У меня проблема в запросе.У меня есть таблицы product, stockRecord и priceDetail.Я хочу отобразить все продукты.Если цена не определена в priceDetail для этого продукта, то она будет равна 0,00;аналогично, если количество не определено в таблице stockRecord, то количество должно быть 0.

Но если цена определена в таблице priceDetail, то мы должны получить самую последнюю цену из таблицы

WMProduct

  BusinessUnit   ProductCode    Description    SalableFlag
  MASS           0001           Pen            1
  MASS           0002           Computer       1
  MASS           0003           Book           1
  MASS           0004           Bottle         1

WMStockRecord

 ProductCode     AvailableQuantity
 0001            10
 0003            15

WMPriceDetail

 ProductCode   DateFrom      DateTo        Price
 0001          10-10-2009    10-10-2011    100
 0001          10-12-2009    10-10-2010    80
 0001          12-12-2010    01-12-2011    120
 0002          12-01-2010    ''            200
 0004          12-12-2010    12-05-2011    100

Мне нужен список таких продуктов:

BusinessUnit  ProductCode   Description SalableFlag   Price    AvailableQuantity
MASS          0001          Pen         1             120      10
MASS          0002          Computer    1             200      0
MASS          0003          Book        1             0.00     15
MASS          0004          Bottle      1             0.00     0

1 Ответ

2 голосов
/ 13 сентября 2011

Попробуйте использовать подзапрос и левое соединение, как показано ниже:

SELECT P.ProductCode AS ProductCode, 
       P.Description AS ProductName,  
       P.SalableFlag AS Salable,
       ISNULL(STK.AvailableQuantity, 0) AS Qty,
       ISNULL((SELECT TOP 1 Price FROM WMPriceDetail
               WHERE ProductCode = P.ProductCode ORDER BY DateTo DESC), 0) AS Price 
  FROM WMProduct P
  LEFT JOIN WMStockRecord STK ON P.ProductCode = STK.ProductCode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...