2017-05-04 75 views
2

我有類別的表中,其中的每一個具有施加到它的加權不同的數據。DB2 SQL SELECT基於加權

我的產品和它們出現在分類表,並要選擇與每個產品的最高權重的類別。

我曾嘗試使用DISTINCT,但它似乎並不想與排序工作。

我的基本的查詢是:

select a.product, a.category from prodcattable a 
join categorytable b on a.category=b.category 
order by product, weighting desc 

當一個產品出現在多個類別,我只是想返回一行,與產品和排名最高的類別。

這需要在DB2的工作,因爲我需要在iSeries運行。

我希望我可以使用結果進行比較的主產品表,看是否類已經改變,而不必通過整個主產品表中讀取,併爲每個產品找到具有最高權重的類別。擁有超過75,000種產品,這是很多要執行的查詢。

回答

2

一種方法使用row_number()

select pc.* 
from (select p.product, p.category, 
      row_number() over (partition by p.product order by weighting desc) as seqnum 
     from prodcattable p join 
      categorytable c 
      on p.category= c.category 
    ) pc 
where seqnum = 1;