当值> 1时,如何获取多行

Mik*_*ole 2 sql t-sql sql-server sql-server-2008

可能重复:
从表中多次选择记录

我希望我的查询返回(多个)行为TABLE_B.QTY的值.

TABLE A
SALESNR  ITEMNR LINENR
100      B2001  1
101      B2002  2
102      A1021  3 

TABLE B 
LINENR   COLOR QTY
1        WHITE  3  
2        BLACK  1
3        BROWN  8
Run Code Online (Sandbox Code Playgroud)

例如,使用以下查询:

SELECT    TABLE_A.SALESNR, TABLE_A.ITEMNR, TABLE_B.COLOR, TABLE_B.QTY
FROM       TABLE_A  INNER JOIN TABLE_B ON TABLE_B.LINENR = TABLE_A.LINENR
Run Code Online (Sandbox Code Playgroud)

我明白了:

100    B2001   White   3
Run Code Online (Sandbox Code Playgroud)

我需要的是:

100    B2001   White   3
100    B2001   White   3
100    B2001   White   3
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?想不出谷歌这个合适的关键词......

日Thnx,

麦克风

t-c*_*.dk 5

只要数量小于2047,这将有效

SELECT TABLE_A.SALESNR, TABLE_A.ITEMNR, TABLE_B.COLOR, TABLE_B.QTY 
FROM TABLE_A
INNER JOIN TABLE_B ON TABLE_B.LINENR = TABLE_A.LINENR 
INNER JOIN master..spt_values ON type = 'P' AND number < TABLE_B.QTY
Run Code Online (Sandbox Code Playgroud)

如果QTY超过2047,请使用此选项:

;WITH a AS
(
SELECT TABLE_A.SALESNR, TABLE_A.ITEMNR, TABLE_B.COLOR, TABLE_B.QTY, 1 row
FROM TABLE_A
INNER JOIN TABLE_B ON TABLE_B.LINENR = TABLE_A.LINENR 
WHERE QTY > 0
union all
SELECT SALESNR, ITEMNR, COLOR, QTY, row+1 
FROM a
WHERE QTY > row 
)
SELECT SALESNR, ITEMNR, COLOR, QTY from a
OPTION (MAXRECURSION 0) 
Run Code Online (Sandbox Code Playgroud)