2012-09-24 9 views
-4

CHAR 컬럼의 최대 occurance의 값을 검색하는 방법을내가 컬럼의 최대 occurance을 얻는 데 문제가

matnum uom amount 
------------------------------------- 
1234 EA 10 
1234 CS 10 
1234 EA 20 
1235 CS 10 
1235 CS 20 

내 출력 선택해야

matnum uom SUM(amount) 
------------------------------------- 
1234 EA (because EA occured Twice) 40 
1235 CS        30 

원하는 결과를 얻기 위해 선택 쿼리를 친절하게 제공하십시오.

+2

이, 그것은 40 있어야되거나 30? 'EA'가 두 번 나오면 총은 30으로 보이지만 40을 원한다는 것을 보여 줍니까? – Taryn

+1

제목이 최대라고 표시되어 있지만 필요한 출력이 합계가 될 수 있습니다 - 어느 것이 최대 또는 합계입니까? @Bluefeet은 그들이 총계가 아니라고 말합니다. – Mark

+0

저는'uom'과'SUM (amount)'은 서로 관련이 없다고 생각합니다. 'SUM (amount)'은'matnum'의 모든 행에 대한 합계로 나타나고'uom'은 가장 빈번한 값으로 보입니다. 확실히 명확하지 않습니다. –

답변

0
select matnum, 
     uom, 
     SUM(amount) as sum_amount 
from your_table 
group by matnum, uom 
0
select max(matnum) as matnum,max(uom) as uom,SUM(amount) 
from yourtable 
group by matnum,uom 
1

나는 당신이 원하는 여기에 대해 몇 가지를 가정하고 있지만 해요 :

SELECT A.matnum, B.uom, C.s AS [SUM(amount)] 
FROM yourtable A 
INNER JOIN (
    SELECT matnum, uom, 
     ROW_NUMBER() OVER (PARTITION BY matnum ORDER BY COUNT(*) DESC) AS rnm 
    FROM yourtable 
    GROUP BY matnum, uom 
) B ON A.matnum = B.matnum AND B.rnm = 1 
INNER JOIN (
    SELECT matnum, SUM(amount) AS s 
    FROM yourtable 
    GROUP BY matnum 
) C ON A.matnum = C.matnum 
GROUP BY A.matnum, B.uom, C.s 
1234``의 올바른 값이 무엇인지

SQL Fiddle

관련 문제