2

SQL Serverデータベースには数千のジョブ番号が格納されており、ジョブリストと統合されているサードパーティアプリケーションでグループ化するために、それらがどの1000または100の範囲に該当するかを導き出せるようにしたいと思います。

クエリの結果セットの列で、各ジョブ番号が属する1000のグループを抽出するにはどうすればよいですか?

例:出力を次のようにしたいと思います。

JOB_NUMBER      JOB_GROUP
678             0-999
679             0-999
1517            1000-1999
2011            2000-2999
2150            2000-2999
...etc.
4

3 に答える 3

7

job_numberが整数の場合、次を使用できます。

select job_number, 
       convert(varchar(10), job_number / 1000 * 1000) 
     + '-' 
     + convert(varchar(10), job_number / 1000 * 1000 + 999) Range
  from whatever
于 2012-09-13T14:47:57.747 に答える
2

CASE式を使用できます。

SELECT 
JOB_NUMBER,
JOB_GROUP = CASE 
      WHEN JOB_NUMBER < 1000 THEN '0-999'
      WHEN JOB_NUMBER < 2000 THEN '1000-1999'
      WHEN JOB_NUMBER < 3000 THEN '2000-2999'
    END
于 2012-09-13T14:44:09.633 に答える
0

これを試して:

WITH CTE AS(
    SELECT JOB_NUMBER/1000 AS JOB_NUMBER,MIN(JOB_NUMBER) AS MIN_NUMBER,
           MAX(JOB_NUMBER) AS MAX_NUMBER
    FROM <TABLE>
    GROUP BY NUMBER/1000)
SELECT M.JOB_NUMBER,
       CAST(MIN_NUMBER AS VARCHAR(20))+'-'+CAST(MAX_NUMBER AS VARCHAR(20))
FROM  <TABLE> M 
JOIN  CTE 
ON    MIN_NUMBER<= M.JOB_NUMBER
AND   MAX_NUMBER >=M.JOB_NUMBER
ORDER BY M.JOB_NUMBER
于 2012-09-13T14:58:41.003 に答える