如何在Microsoft SQL中将数据分组到存储区中

8 sql-server

目前我的SQL语句如下

SELECT NAME, ROUND([DR# BASE]/DAYS_WORKED,0) AS 'BASE/DAY'
FROM MYTABLE
Run Code Online (Sandbox Code Playgroud)

输出数据如下所示

NAME    BASE/DAY
James   300
Jane    310
Jim 313
John    325
Jonah   400
Run Code Online (Sandbox Code Playgroud)

是否有一个SQL语句使输出看起来如下所示?

NAME    BUCKET  BASE/DAY
James   300 <= 325  300
Jane    300 <= 325  310
Jim 300 <= 325  313
John    300 <= 325  325
Johnny  325 <= 350  329
Jonah   350 <= 400  400
Run Code Online (Sandbox Code Playgroud)

Gor*_*ell 9

SELECT NAME, 
CASE WHEN [BASE/DAY] <= 325 THEN '300 <= 325'
     WHEN [BASE/DAY] <= 350 THEN '325 <= 350'
     WHEN [BASE/DAY] <= 400 THEN '350 <= 400'
END AS BUCKET,
[BASE/DAY]
FROM
(
    SELECT NAME, ROUND([DR# BASE]/DAYS_WORKED,0) AS 'BASE/DAY' FROM MYTABLE
) T
ORDER BY 1, 2, 3
Run Code Online (Sandbox Code Playgroud)


ric*_*ent 5

SELECT NAME,
    [BASE/DAY],
    CAST( ([BASE/DAY]-1) / 25) * 25 AS varchar(20)) + ' <= ' +
    CAST( ([BASE/DAY]-1) / 25 + 1) * 25 AS varchar(20)) As Bucket,
FROM 
    (SELECT Name, ROUND([DR# BASE]/DAYS_WORKED,0) AS [BASE/DAY]
      FROM MYTABLE) T
Run Code Online (Sandbox Code Playgroud)

编辑:修复边界值以显示在下部存储桶中.

  • 固定,谢谢戈登!我被CTE宠坏了. (2认同)