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;