【问题标题】:How to Join Percentage ranges table and another Table:如何加入百分比范围表和另一个表:
【发布时间】:2014-10-25 16:13:00
【问题描述】:

我已经写了小存储过程,它给出了下面的结果

Exec  dbo.usp_CDB_Percentile_V2 @input =10

结果:

percentile_Number   range1  Range2
1               1%  10%
2               11% 20%
3               21% 30%
4               31% 40%
5               41% 50%
6               51% 60%
7               61% 70%
8               71% 80%
9               81% 90%
10              91% 100%

另一个临时表有 N 行结果:

Person_Code       No'of contacts         Percentile(%)
AAA1                44                     35.77
AAA2                88                     71.5

AA3                 123                     100%

我正在尝试创建仪表板,那么如何使用 T-SQL 代码连接这两个表... 你能给我建议吗,我会感谢你的。提前致谢。

【问题讨论】:

  • 为什么要编写存储过程来执行 SQL Server 已经执行的操作(ntile()percentile_rank())?其次,如果你想自己写,为什么不使用表值函数而不是存储过程呢?

标签: sql sql-server tsql reporting-services


【解决方案1】:

我会让 SP 只返回一个浮点数而不是百分比。我会在我的视图中添加百分比符号。

那么就很容易将结果与表格连接起来:

DECLARE @Ranges AS Table(percentile_Number INT, range1 FLOAT, range2 FLOAT)
INSERT INTO @Ranges
Exec dbo.usp_CDB_Percentile_V2 @input =10

SELECT *
FROM   Persons P
       JOIN @Ranges R ON P.Percentile BETWEEN R.range1 AND R.range2

【讨论】:

    【解决方案2】:

    如果我理解正确,您可能根本不需要存储过程。检查 NTILE() 函数:

    http://msdn.microsoft.com/en-us/library/ms175126.aspx

    至少它和你的存储过程一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2015-07-22
      相关资源
      最近更新 更多