2017-03-16 24 views
1

我有一個簡單的查詢,按僱員拉每個位置的集合。如何組合行如果第一組by子句滿足

比方說,我有以下數據:

Username Store_number Invoice_amt 
TJ1   1    5 
TJ1   1    5 
TJ1   2    5 
RB2   3    5 
RB2   3    5 
DD1   4    5 
DD1   4    5 

我有一個查詢:

Select username, Sum(invoice_amt) as Total, Store_number 

我有以下的輸出:

username Total  store_number 
TJ1   10   1 
TJ1   5   2 
RB2   10   3 
DD1   10   4 

我是什麼希望做的 - 是結合用戶名第一,然後通過商店編號分開 - 有沒有辦法讓我的輸出是:

username Total  store_number 
TJ1   15   1 
RB2   10   3 
DD1   10   4 

回答

1

我意識到你可能不想要最小的商店。您可能需要商店最常見的價值。如果是這樣的話:

select username, amount, 
     max(case when seqnum = 1 then store end) as most_common_store 
from (select username, store, sum(invoice_amount) as amount, 
      row_number() over (partition by username order by sum(invoice_amount) desc) as seqnum 
     from t 
     group by username, store 
    ) us 
group by username; 
1

你可以只取min(store_number)

select 
    username 
    , Sum(invoice_amt) as Total 
    , min(store_number) as Store_number 
from t 
group by username 
0

這將是你的查詢,如果我理解你的問題的權利。

Select 
username, 
sum(invoice_amt) as Total, 
Min(store_number) as store_number 
from Table! 
Group By UserName