我正在尝试计算'发生的交易次数'。 数据可能如下所示。
Cust # Trans# TransType LineItem
42 5000 1 1
42 6000 1 1
42 6000 1 2
42 6000 2 1
42 6000 2 2
42 6000 2 3
任何给定的交易号都可以有多种交易类型。在这个例子中,我想要的返回'交易数'计数是'3',因为Trans#5000只有一个不同的TransType而6000有两个。如果我对Trans#进行了明确的计算,我得到'2',如果我只计算一次,我得到'6'。
我尝试过:
COUNT(DISTINCT CASE Trans# WHEN ???? THEN 1 ELSE null END) AS [Num of Transactions],
但我知道我并没有走上正轨。如果有人能指出我正确的方向,那将非常感激。
答案 0 :(得分:1)
试试这个: -
with cte as
(
Select Cust,Trans,row_number() over (partition by trans,TransType order by cust) rn
from Sample
)
Select count(*) as TransCount from cte
where rn=1
SQL FIDDLE DEMO
答案 1 :(得分:1)
您可以使用以下内容获取每个客户和交易的不同转换类型的计数:
select cust,
trans,
count(distinct transtype) cnt
from yourtable
group by cust, trans;
然后,如果您想要总计数,则可以将sum()
应用于查询:
select sum(cnt) Total
from
(
select cust,
trans,
count(distinct transtype) cnt
from yourtable
group by cust, trans
) src
请参阅两个查询的SQL Fiddle with Demo。