2013-10-03 1 views
1

Существующая таблица как:Как увеличить значение столбца до определенного диапазона значений в другом столбце?

tmc   speed 
ABC   55 
DEF   55 

Я хочу, чтобы создать таблицу как следующий один, используя существующую таблицу в SQL Server 2008:

tmc   speed 
ABC   55 
ABC   56 
ABC   57 
ABC   58 
ABC   59 
ABC   60 
DEF   55 
DEF   56 
DEF   57 
DEF   58 
DEF   59 
DEF   60 

код я разработал не показывал мне точного результата я хочу. Любая помощь будет высоко оценена.

код, который я использовал для решения этой проблемы является:

; WITH mycte AS 
(SELECT [tmc_code], [speed] FROM table_1 
    UNION ALL 
    SELECT [tmc_code], [speed]+1 FROM table_1 WHERE [speed]+1 <=60) 
SELECT [tmc_code], [speed] FROM mycte 
+0

кода я использовал для решения этой проблемы является:; С mycte AS ( SELECT [tmc_code], [скорость] ОТ table_1 UNION ALL SELECT [tmc_code], [скорость] +1 ОТ table_1 ГДЕ [Скорость] + 1 <= 60 ) SELECT [tmc_code], [скорость] FROM mycte –

+0

«Код, который я разработал, не показывает мне точный результат, который я хочу». Давайте начнем с этого может быть? – zerkms

+0

Какая здесь логика? Каков процесс перехода от существующей таблицы к желаемому результату? –

ответ

2

Вы ищете что-то вроде этого?

;WITH mycte AS (
    SELECT 1 n 
    UNION ALL 
    SELECT n + 1 FROM mycte WHERE n < 100 
) 
SELECT tmc_code, speed + n - 1 speed 
    FROM table1 CROSS JOIN mycte 
WHERE mycte.n BETWEEN 1 AND 6 
ORDER BY tmc_code, speed 

Выход:

 
| TMC_CODE | SPEED | 
|----------|-------| 
|  ABC | 55 | 
|  ABC | 56 | 
|  ABC | 57 | 
|  ABC | 58 | 
|  ABC | 59 | 
|  ABC | 60 | 
|  DEF | 55 | 
|  DEF | 56 | 
|  DEF | 57 | 
|  DEF | 58 | 
|  DEF | 59 | 
|  DEF | 60 | 

Вот SQLFiddle демо

+0

Большое вам спасибо ....... помогло много ......... Я использовал ту же идею, чтобы работать с несколькими другими переменными ........ –

0

Рассмотрит сохраненный номер таблицу, it can have many uses, в том числе вашей нынешней проблемы.

С таблицей чисел, вы можете сделать следующее:

SELECT 
    t.tmc_code, 
    speed = t.speed + n.Number 
FROM table_1 AS t 
INNER JOIN numbers AS n ON n.Number BETWEEN t.speed AND t.speed + 5 
; 
Смежные вопросы