2016-03-23 21 views
0

1列に個別のOracle:だから結果だけに関係なく、値はその私は次のようにテーブル構造を有する

が付属していることの

ITEM LOC STATUS QTY 
001 RS1 A  10 
001 JS1 I  20 
110 RS1 A  4 

が、私は明確なITEMに基づいて結果を取得したいがは、

ITEM LOC STATUS QTY 
001 JS1  A  10 
110 RS1  A  4 

どのようにする必要がありますか?値が同じ行から来る必要がない場合

+0

グループ他の列には最大値または最小値を使用してください。 –

+0

LOC、STATUSおよびQTY値の選択方法は?すべて同じ行(または)、または他の戦略からですか? – jarlh

答えて

0

一つの方法は、集合体である:あなたが同じ行のすべての値をしたい場合は

select item, max(loc) as loc, . . . 
from t 
group by item; 

、使用row_number()

select t.* 
from (select t.*, row_number() over (partition by item order by item) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
0

各列にitemの最小値(期待どおりの結果が表示される)が必要な場合:

SELECT ITEM, 
     MIN(LOC) AS LOC, 
     MIN(status) AS status, 
     MIN(qty) AS qty 
FROM table_name 
GROUP BY item 

あなたは、特定の順序に対する最低限のある項目の値たい場合:

SELECT ITEM, 
     MIN(LOC) KEEP (DENSE_RANK FIRST ORDER BY your_criteria) AS LOC, 
     MIN(status) KEEP (DENSE_RANK FIRST ORDER BY your_criteria) AS status, 
     MIN(qty) KEEP (DENSE_RANK FIRST ORDER BY your_criteria) AS qty 
FROM table_name 
GROUP BY item 

をそれとも、すべて同じ行からのものであるとする場合:項目別

SELECT item, loc, status, qty 
FROM (
    SELECT t.*, 
     ROW_NUMBER() OVER (PARTITION BY item ORDER BY your_criteria) AS RN 
    FROM table_name t 
) 
WHERE RN = 1; 
関連する問題