TSQL计数外观按其他表中的值分组

时间:2015-09-12 14:49:05

标签: sql-server tsql group-by

我需要将一些数据分组以在图表中显示但是......对我来说太难了: - (

在一张表中,我有客户信息,其中包括名称,公斤和年营业额

CustomerA               8       415.86
CustomerB          145846      6815.80
..............
CustomerZC          25160     25690.30 

我需要COUNT个购买少于50公斤的客户,从51到100购买的数量,从100到1.000,从1000到30.000等等 但由于组限制不相似,因此每个范围的边界都存储在另一个表中,看起来像

Group0      0-50
Group1     51-100
Group2    101-1000
.....
Group15  1000001-5000000
Group16  5000001-9999999999 

但如果有帮助我可以修改它

我的目标是得到这样的结果:

0-50          14217
51-100         6425
101-1000        841
....
1000001-5000000  43 

现在我实现了这个结果,产生了15个不同的查询,但我想制作一个可以适应不同数量的组的全局算法

由于

1 个答案:

答案 0 :(得分:1)

This one类似,请查看连接到范围表的第二个选项。

在你的情况下,它看起来像这样:

select   r.boundary_name, coalesce(count(*), 0) as cnt
from     ranges r
left join customers c
on       c.kgs between r.low_range and r.high_range
group by r.boundary_name;

当然,如果您正在寻找独家范围与包含范围,则您需要调整连接,并且范围表将需要一个低限和高限列。