Как найти минимальную запись продажной цены в SQL Server 2008? - PullRequest
0 голосов
/ 01 сентября 2010
ProductPrice table:
ProductPriceId,ProductId,CurrencyId,CustomerGroupId,PriceTierId,List,Selling,Bulk   



868      1      1      NULL   NULL      45.00      42.00      42.00      
869      1      1      2      NULL      39.00      36.00      33.00      
870      1      3      NULL   NULL      48.00      45.00      45.00      
871      1      1      5      NULL      40.00      40.00      40.00      
872      2      1      NULL   NULL      50.00      48.00      48.00      
873      2      3      NULL   NULL      50.00      50.00      50.00      
874      2      1      2      NULL      45.00      45.00      45.00      
875      2      1      5      NULL      56.00      56.00      56.00      

идентификатор продукта один имеет 4 записи, я хочу найти запись минимальной цены продажи в таблице. Например,
идентификатор продукта = 1 результат:

869 1   1   2   NULL    39.00   36.00   33.00   

PLZ, помогите мне

Ответы [ 4 ]

0 голосов
/ 24 ноября 2011

Вы можете использовать запрос ниже, чтобы найти желаемый результат.

SELECT  ProductPriceId, ProductId, CurrencyId, CustomerGroupId, PriceTierId, List, Selling, Bulk,

        RANK() OVER (PARTITION BY ProductId ORDER BY Selling DESC) AS Rnk

FROM    ProductPrice

WHERE  Rnk=1
0 голосов
/ 02 сентября 2010
SELECT TOP 1 
    * 
FROM 
    ProductPrice 
WHERE 
    ProductId = 1 
ORDER BY 
    Selling ASC
0 голосов
/ 02 сентября 2010
select t1.*
from ProductPrice t1
where not exists(select *
                 from ProductPrice t2
                 where t2.Selling<t1.Selling and t2.productid=t1.priductid)

Возвращает все записи минимальной цены продажи для каждого идентификатора продукта. Если таких строк несколько, возвращается несколько.

0 голосов
/ 01 сентября 2010

Ниже приведено несколько строк в случае ничьей. Если вы не хотите этого, используйте Row_number() вместо Rank()

;WITH cte AS
     ( SELECT  ProductPriceId,
              ProductId      ,
              CurrencyId     ,
              CustomerGroupId,
              PriceTierId    ,
              List           ,
              Selling        ,
              Bulk           ,
              RANK() OVER (PARTITION BY ProductId ORDER BY Selling) AS Rnk
     FROM     ProductPrice
     )
SELECT ProductPriceId ,
       ProductId      ,
       CurrencyId     ,
       CustomerGroupId,
       PriceTierId    ,
       List           ,
       Selling        ,
       Bulk
FROM   cte
WHERE  Rnk=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...