计算'交易数量'

时间:2013-03-22 15:05:58

标签: tsql reporting-services count ssrs-2008

我正在尝试计算'发生的交易次数'。 数据可能如下所示。

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],    

但我知道我并没有走上正轨。如果有人能指出我正确的方向,那将非常感激。

2 个答案:

答案 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