我需要在一列中使用不同数量的值,并按日期将其分组。真正的问题是,如果计数已经出现在先前的结果中,则不应该包括该计数。
例如:考虑表tblcust
Date Customers
March 1 Mike
March 1 Yusuf
March 1 John
March 2 Ajay
March 2 Mike
March 2 Anna
结果应该是
Date Customer_count
March 1 3
March 2 2
如果我使用
select date,count(distinct(customer)) as customer_count
group by date
我得到的结果是
Date customer_count
March 1 3
March 2 3
[客户,Mike两次来过,不应算作新客户。
您可以尝试使用SQL Server ROW_NUMBER Function 来实现。
create table tblCust (DtDate varchar(20), Customers Varchar(20))
insert into tblCust Values
('March 1', 'Mike'),
('March 1', 'Yusuf'),
('March 1', 'John'),
('March 2', 'Ajay'),
('March 2', 'Mike'),
('March 2', 'Anna')
Select dtDate
, Customers
, ROW_NUMBER() OVER (PARTITION BY Customers ORDER BY DtDate) as SrNo
from tblCust
order by DtDate, SrNo
select Dtdate,
count(distinct(customers)) as customer_count
from(Select dtDate
, Customers
, ROW_NUMBER() OVER (PARTITION BY Customers ORDER BY DtDate) as SrNo
from tblCust
)a where SrNo = 1
group by Dtdate
这里是现场db<>fiddle演示