2013-03-26 3 views
0

Я пытаюсь создать несколько строк на основе значения в столбце моей таблицы. Мне нужно, чтобы количество строк было в три раза больше данных в столбце. В настоящее время у меня есть так, что он повторяет количество строк на основе значения в столбце, но я не могу разобраться, как заставить его выполнить в три раза больше значения в столбце. Вот мой код:Повторить строки на основе умножения значения поля

WITH tmp as (SELECT 1 as rn UNION ALL SELECT rn+1 from tmp WHERE rn<=1000) 

    SELECT 
    [SURNAME], 
    [NAME], 
    [AGE], 
    [PAYMENT DAYS PER/WK] 

    FROM 
    [PublishedReporting].[dbo].[Sheet1$] 
    LEFT JOIN (SELECT * FROM tmp WHERE rn<=50) as 
            rowgen on [PAYMENT DAYS PER/WK] >= rowgen.rn 

    WHERE 
    [PAYMENT DAYS PER/WK] IS NOT NULL 

    ORDER BY 
    SURNAME, 
    NAME 

    option (maxrecursion 32767); 

Вот пример из моих результатов: Так вот он показывает 3 строки для Люси Адамс, но мне это нужно, чтобы показать 9

Благодарности

ответ

1
select * from [PublishedReporting].[dbo].[Sheet1$] 
union all 
select * from [PublishedReporting].[dbo].[Sheet1$] 
union all 
select * from [PublishedReporting].[dbo].[Sheet1$] 
order by 1; 
+0

Спасибо за ответ, но он дает те же результаты, что и мой запрос. – Will

+0

. Я получил его, используя вариацию вашего ответа, поэтому спасибо – Will

0

В качестве примечания имеется альтернативный метод, который обычно не требует сканирования таблицы три раза:

select t.* 
from [PublishedReporting].[dbo].[Sheet1$] t cross join 
     (select 1 as n union all select 2 union all select 3) rows3 
Смежные вопросы