Sql 如果满足第一个GROUPBY子句,如何合并行

Sql 如果满足第一个GROUPBY子句,如何合并行,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个简单的查询,可以按员工为每个位置提取集合 假设我有以下数据: Username Store_number Invoice_amt TJ1 1 5 TJ1 1 5 TJ1 2 5 RB2 3 5 RB2 3 5 DD1 4

我有一个简单的查询,可以按员工为每个位置提取集合

假设我有以下数据:

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

您可以只取
min(门店号)


如果我没弄错你的问题,这就是你的问题

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

我知道你可能不想要最小的商店。您可能想要存储最常见的值。如果是:

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;
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;