Проблема SQl Query - - PullRequest
       8

Проблема SQl Query -

4 голосов
/ 01 сентября 2011

У меня есть проблемы в запросе:

 priceDeatil 
 ProductCode  BusinessUnit  price   DateFrom     DateTo
  10001         ORB          12.00   12-08-2011   31-09-2015
  10001         ORB          21.00   01.08-2011   15-11-2011
  10002         ORB          31.00   01.04-2011   15-08-2012
  10003         ORB          42.00   01.05-2011   15-08-2012

Мой запрос:

 SELECT     BusinessUnit, ProductCode,  DateFrom, DateTo, Price
 FROM         WMPriceDetail
 WHERE     (DateFrom < 'Sep 01 2011') AND (DateTo > 'Sep 01 2011' OR DateTo = '')
 ORDER BY ProductCode

Это возвращение

   priceDeatil 
 ProductCode  BusinessUnit  price   DateFrom     DateTo
  10001         ORB          12.00   12-08-2011   31-09-2015
  10001         ORB          21.00   01.08-2011   15-11-2011
  10002         ORB          31.00   01.04-2011   15-08-2012
  10003         ORB          42.00   01.05-2011   15-08-2012

Но здесь productCode 10001 возвращает две записи, на этот раз я хочу получить максимальную дату, т.е. 12-08-2011.

Итак, желаемый результат должен быть таким:

   priceDeatil 
 ProductCode  BusinessUnit  price   DateFrom     DateTo
  10001         ORB          12.00   12-08-2011   31-09-2015
  10002         ORB          31.00   01.04-2011   15-08-2012
  10003         ORB          42.00   01.05-2011   15-08-2012

Пожалуйста, помогите мне ... Как написать запрос для этой ситуации?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011
 SELECT     BusinessUnit, ProductCode,  DateFrom, DateTo, Price FROM
 (SELECT    BusinessUnit, ProductCode,  DateFrom, DateTo, Price, 
 rank() over (PARTITION BY ProductCode ORDER BY DateFrom DESC) rank_num
 FROM  WMPriceDetail
 WHERE (DateFrom < 'Sep 01 2011') AND (DateTo > 'Sep 01 2011' OR DateTo = '') t 
 WHERE rank_num=1
 ORDER BY ProductCode
0 голосов
/ 03 февраля 2012

Используйте этот запрос:

select BusinessUnit, ProductCode,  DateFrom, DateTo, Price from WMPriceDetail 
where DateFrom  in (select MAX(datefrom) from WMPriceDetail group by ProductCode)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...