Sql server 使用嵌套和遍历不同的值
我正在使用MS SQL Server。我有一个名为“佣金”的表格,其中包含客户、日期、类别和佣金金额。我正在尝试按类别统计客户数量Sql server 使用嵌套和遍历不同的值,sql-server,Sql Server,我正在使用MS SQL Server。我有一个名为“佣金”的表格,其中包含客户、日期、类别和佣金金额。我正在尝试按类别统计客户数量 declare @category nvarchar(50) set @category = 'Shirts' select @category , COUNT(*) from ( SELECT SUM(Commission) AS CommTotal, [Real Customer] FROM dbo.Commissions WHE
declare @category nvarchar(50)
set @category = 'Shirts'
select @category , COUNT(*)
from (
SELECT SUM(Commission) AS CommTotal, [Real Customer]
FROM dbo.Commissions
WHERE category = @category and ([Line Item Date] >= CONVERT(DATETIME, '2014-10-01', 102) AND [Line Item Date] < CONVERT(DATETIME, '2015-10-01', 102))
GROUP BY [Real Customer]
) as Agg
我已经找到了SQL代码,它为我提供了单个类别的客户总数
declare @category nvarchar(50)
set @category = 'Shirts'
select @category , COUNT(*)
from (
SELECT SUM(Commission) AS CommTotal, [Real Customer]
FROM dbo.Commissions
WHERE category = @category and ([Line Item Date] >= CONVERT(DATETIME, '2014-10-01', 102) AND [Line Item Date] < CONVERT(DATETIME, '2015-10-01', 102))
GROUP BY [Real Customer]
) as Agg
- 衬衫652
- 裤子1420
- 鞋子342
- 袜子553
- 帽子992
如有任何建议,将不胜感激 您可以使用此查询。它将统计每个类别的
[真实客户]
不同值的数量
SELECT category, COUNT(DISTINCT [Real Customer])
FROM dbo.Commissions
WHERE [Line Item Date] >= CONVERT(DATETIME, '2014-10-01', 102) AND [Line Item Date] < CONVERT(DATETIME, '2015-10-01', 102)
GROUP BY category
选择类别、计数(不同[真实客户])
来自dbo.佣金
其中【行项目日期】>=转换(日期时间,'2014-10-01',102)和【行项目日期】<转换(日期时间,'2015-10-01',102)
按类别分组
您还可以选择添加一个
where
子句,以将类别的数量限制为您列出的类别。或者按上述方式保留查询以获取所有类别。首先:在代码中,您是按单个类别选择的。在输出示例中,您需要所有类别。因此,必须删除选择
'-- wrapper
select distinct category from commissions
第二:我假设客户和类别的组合不是唯一的,但您希望每个类别只统计一次客户
第三:我正在复制你选择的日期
您需要按类别分组,然后计算每组的客户数,每个客户只计算一次
试试这个:
select category, count(distinct [Real Customer])
from Commissions
where ([Line Item Date] >= CONVERT(DATETIME, '2014-10-01', 102)
and [Line Item Date] < CONVERT(DATETIME, '2015-10-01', 102))
group by Category
选择类别、计数(不同[真实客户])
佣金
其中([行项目日期]>=转换(日期时间,'2014-10-01',102)
和[行项目日期]<转换(日期时间,'2015-10-01',102))
按类别分组
Albert您能提供,SQLFIDLE与模式吗?您是否尝试将类别按分组,然后按内部选择和外部选择,并忘记类别变量?我从未使用过SQLFIDLE,因此可能需要一点时间来组合。谢谢您,Albert!它工作得很好。我感谢你的详细解释。