2013-10-03 36 views
1

現有的表是這樣的:如何將列的值增加到其他列中值的特定範圍?

tmc   speed 
ABC   55 
DEF   55 

我想創建一個表像下一個2008年使用現有的表中的SQL Server:

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

代碼我用來解決的問題是:; WITH mycte AS ( SELECT [tmc_code],[速度] FROM TABLE_1 UNION ALL SELECT [tmc_code],[SPEED] 1 FROM TABLE_1 WHERE [SPEED] 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 
; 
相關問題