0

テーブルの列の値に基づいて複数の行を生成しようとしています。行数は、列のデータの値の3倍にする必要があります。現在私はそれを持っているので、列の値に基づいて行数を繰り返しますが、列の値の3倍を取得する方法を理解できません。これが私のコードです:

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);

これが私の結果のサンプルです。つまり、ここではLucy Adamsの3行が表示されていますが、9行を表示する必要があります。

ありがとう

4

2 に答える 2

1
select * from  [PublishedReporting].[dbo].[Sheet1$]  
union all
select * from  [PublishedReporting].[dbo].[Sheet1$]  
union all
select * from  [PublishedReporting].[dbo].[Sheet1$]
order by 1;
于 2013-03-26T10:47:25.100 に答える
0

注として、テーブルを3回スキャンする必要がない別の方法があります。

select t.*
from  [PublishedReporting].[dbo].[Sheet1$] t cross join
      (select 1 as n union all select 2 union all select 3) rows3
于 2013-03-26T14:04:18.863 に答える