如果我需要大约100个回收箱,如何在Server 2008中进行绑定?我需要分组记录,这取决于一个二进制变量是否属于100个相等间隔中的一个。例如,如果有连续变化的年龄,我可以这样写:
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]但这个过程会耗费时间吗?还有其他的方法可以做吗?
发布于 2015-12-07 13:04:29
根据您对段为1200的评论来尝试这样做:
;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发布于 2015-12-07 12:32:47
请试用本守则一次:
SELECT CASE
WHEN AGE = 0 THEN 1
ELSE Ceiling([age])
END [age_group]
FROM @T 在这里,天花板函数返回大于或等于指定数字表达式的最小整数。即选择上限(0.1) SQL返回1作为输出
但是根据您的输出需求,地板(年龄)+1就足以获得所需的输出。
SELECT Floor([age]) + 1 [age_group]
FROM @T 在这里,减值函数返回小于或等于指定数值表达式的最大整数。
发布于 2015-12-07 12:23:18
我猜是数学。在这种情况下,
Ceiling(Age) AS [age_group]根据需要转换为您选择的字符类型。天花板是Server中的“整型整型”函数。
https://stackoverflow.com/questions/34133375
复制相似问题