Дублируйте строку несколько раз - PullRequest
0 голосов
/ 16 марта 2012

В основном я хочу дублировать строку разное количество раз.У меня есть таблица со следующей структурой:

CREATE TABLE [dbo].[Start](
[ID] [int] NOT NULL,
[Apt] [int] NOT NULL,
[Cost] [int] NOT NULL)

Я хочу продублировать каждую строку в этой таблице (Apt-1) раз, так что в конце будут строки #Apt.Более того, для каждой новой строки значение Cost уменьшается до тех пор, пока не достигнет 0. Идентификатор будет таким же, как и при отсутствии первичных ключей.Если у меня есть такая запись:

1    5    3

Мне нужно 4 новых строки, вставленные в одну таблицу, и они должны выглядеть следующим образомпути, но я не могу заставить это работать.Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2012

попробуйте

DECLARE  @Start TABLE ( 
[ID] [int] NOT NULL, 
[Apt] [int] NOT NULL, 
[Cost] [int] NOT NULL) 

INSERT @Start (ID, Apt, Cost)
VALUES  (1, 5, 3)



; WITH CTE_DIGS AS (
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS rn
    FROM master.sys.all_columns AS a
)
INSERT @Start (ID, Apt, Cost)
SELECT ID, Apt, CASE WHEN Cost - rn < 0 THEN 0 ELSE Cost - rn END
FROM @Start
INNER JOIN CTE_DIGS
    ON Apt > rn
0 голосов
/ 16 марта 2012

Попробуйте:

;with cte as 
(select [ID], [Apt], [Cost], 1 counter from [Start]
 union all
 select [ID], 
        [Apt], 
        case sign([Cost]) when 1 then [Cost]-1 else 0 end [Cost], 
        counter+1 counter 
 from cte where counter < [Apt])
select [ID], [Apt], [Cost]
from cte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...