SQL Server:按给定因子多次选择一行

Ash*_*ani 1 sql sql-server

我想从表中选择,但问题是,我有一个因子列,指示必须选择此行的次数(这是一个仅用于演示的示例表):

ID        Factor         Count
-------------------------------
1            1             235        
2            2             345        
3            2             214        
4            3             95        
5            1             135        
6            1             750  
Run Code Online (Sandbox Code Playgroud)

查询:

select top 6 
   [id], [count] 
from 
   table
order by 
    id                  --somewhere in here I must take factor into consideration
Run Code Online (Sandbox Code Playgroud)

结果必须是:

ID            Count
---------------------
 1            235                    
 2            345                    
 2            345                    
 3            214                    
 3            214                    
 4            135        
Run Code Online (Sandbox Code Playgroud)

Lam*_*mak 7

这应该足够了:

SELECT A.*
FROM dbo.YourTable A
INNER JOIN (SELECT *
            FROM master.dbo.spt_values
            WHERE type = 'P') B
    ON A.Factor >= B.number+1
Run Code Online (Sandbox Code Playgroud)

这是一个sqfiddle,它有一个演示.

结果是:

???????????????????????
? ID ? Factor ? Count ?
???????????????????????
?  1 ?      1 ?   235 ?
?  2 ?      2 ?   345 ?
?  2 ?      2 ?   345 ?
?  3 ?      2 ?   214 ?
?  3 ?      2 ?   214 ?
?  4 ?      3 ?    95 ?
?  4 ?      3 ?    95 ?
?  4 ?      3 ?    95 ?
?  5 ?      1 ?   135 ?
?  6 ?      1 ?   750 ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)

如果factor列可以大于2048,则可以使用数字表.