2012-09-26 1 views
2

가능한 중복 :
Select Records multiple times from table가 할 방법은 여러 행을 얻을 때 값> 1

내가 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 

:

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 

내가 얻을 :

100 B2001 White 3 

내가해야 할 것은 :

100 B2001 White 3 
100 B2001 White 3 
100 B2001 White 3 

가 할 수있는 방법이 있나요 이? 은 ... 구글이에 대한 권리 키워드

Thnx,

마이크

+0

안녕하세요 ypercube, 예 예를 들어 테이블을 단순화했지만 linenr 1에 대한 결합으로 인해 1 <-> 1 행이 하나 밖에 없습니다. –

답변

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 

사용이 같이 작동을 생각할 수 없다 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) 
+0

버터 내 엉덩이와 나에게 비스킷 전화;) 당신은 남자 t-clausen, 감사합니다 백만! –

+0

@MikeDole 나는 먼저 질문을 한 행운아였다. –

0

각 테이블의 행, 나는 그것을 해석한다. 가능한 경우 데이터 모델을 다시 설계하여이 문제를 해결하거나이 데이터를 사용하는 코드의 루프를 만들 것을 제안합니다.

절대적으로 필요한 경우 T-SQL을 반복 할 수 있습니다.

안부, 올레

이 다른 사람의 게시물을 언급 할 수없는 것, 바로, 좋은 솔루션, t-clausen.dk을 말하고 싶었다!

관련 문제