2012-09-24 61 views
-4

我有在獲得列的最大一次出現問題char列的最大次數的值如何檢索

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

是什麼的'1234'正確的值,它被認爲是40或30?如果'EA'出現兩次,那麼總數似乎是30,但是你表明你想要40? – Taryn

+1

您的標題說最大值,但所需的輸出可能是總和 - 您的意思是最大或總和中的哪一個?由於@Bluefeet說他們不是合計總數 – Mark

+0

我猜'uom'和'SUM(金額)'是不相關的。 'SUM(金額)'似乎是'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 

SQL Fiddle