首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CASE语句中的很多时间条件(binning)

CASE语句中的很多时间条件(binning)
EN

Stack Overflow用户
提问于 2015-12-07 12:16:32
回答 5查看 1.2K关注 0票数 1

如果我需要大约100个回收箱,如何在Server 2008中进行绑定?我需要分组记录,这取决于一个二进制变量是否属于100个相等间隔中的一个。例如,如果有连续变化的年龄,我可以这样写:

代码语言:javascript
复制
CASE
   WHEN AGE >= 0 AND AGE < 1 THEN '1'
   WHEN AGE >= 1 AND AGE < 2 THEN '2'
   ...
   WHEN AGE >= 99 AND AGE < 100 THEN '100'
END [age_group]

但这个过程会耗费时间吗?还有其他的方法可以做吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-12-07 13:04:29

根据您对段为1200的评论来尝试这样做:

代码语言:javascript
复制
;With Number
AS
(
    SELECT * 
    FROM (Values(1),(2), (3), (4), (5), (6), (7), (8), (9), (10))N(x)
),
Segments
As
( 
    SELECT (ROW_NUMBER() OVER(ORDER BY Num1.x) -1) * 1200 As StartNum,
           ROW_NUMBER() OVER(ORDER BY Num1.x)  * 1200 As EndNum 
    FROM Number Num1
    CROSS APPLY Number Num2
)
SELECT *
FROM Segments
    SELECT *
    FROM Segments
    INNER JOIN MyTable
       ON MyTable.Price >= StartNum AND MyTable.Price < EndNum
票数 0
EN

Stack Overflow用户

发布于 2015-12-07 12:32:47

请试用本守则一次:

代码语言:javascript
复制
SELECT CASE
         WHEN AGE = 0 THEN 1
         ELSE Ceiling([age])
       END [age_group]
FROM   @T 

在这里,天花板函数返回大于或等于指定数字表达式的最小整数。即选择上限(0.1) SQL返回1作为输出

但是根据您的输出需求,地板(年龄)+1就足以获得所需的输出。

代码语言:javascript
复制
SELECT Floor([age]) + 1 [age_group]
    FROM   @T 

在这里,减值函数返回小于或等于指定数值表达式的最大整数。

票数 1
EN

Stack Overflow用户

发布于 2015-12-07 12:23:18

我猜是数学。在这种情况下,

代码语言:javascript
复制
Ceiling(Age) AS [age_group]

根据需要转换为您选择的字符类型。天花板是Server中的“整型整型”函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34133375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档