안녕하세요.
아래와 같이 반목문 관련하여 쿼리를 짜려고 하는데 도움을 받고자 합니다.
Key 칼럼의 경우 해당 고객을 구분하는 기준이 되는 PK로서 고객마다 다 다르게 적용되고 있습니다.
제가 알고 싶은 부분은 사용가능 쿠폰의 수량만큼 고객의 row data가 보여져야 하는데
반복문 들을 사용해서 어떻게 쿼리를 짜면 될지 도움을 받고 싶습니다. ㅠㅠ
현 DB출력시 화면
Key | Name | HP | 사용가능 쿠폰 |
1 | 홍길동 | 010-0000-0001 | 10 |
2 | 김춘수 | 010-0000-0002 | 5 |
3 | 광개토 | 010-0000-0003 | 10 |
4 | 이순신 | 010-0000-0004 | 20 |
5 | 김장군 | 010-0000-0005 | 30 |
반복문 등을 사용하여 출력하고자 화는 화면
Key | Name | HP |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
1 | 홍길동 | 010-0000-0001 |
2 | 김춘수 | 010-0000-0002 |
2 | 김춘수 | 010-0000-0002 |
2 | 김춘수 | 010-0000-0002 |
2 | 김춘수 | 010-0000-0002 |
2 | 김춘수 | 010-0000-0002 |
… | … | …. |
부탁 드리겠습니다.
감사합니다.
Comment 3
-
Terry
2018.07.12 14:44
-
오라클ㄹ
2018.07.12 16:12
알려주셔서 정말 감사드립니다. ^^
-
루디먼트
2018.07.13 16:47
;with cteTable (cNo, cName, cPhone, cCount) as ( select 1,N'홍길동','010-0000-0001',10 union all select 2,N'김춘수','010-0000-0002',05 union all select 3,N'광개토','010-0000-0003',10 union all select 4,N'이순신','010-0000-0004',20 union all select 5,N'김장군','010-0000-0005',30 ) select a.* from cteTable as a cross apply ( select top (a.cCount) 1 as tmp from master.dbo.spt_values ) as b go
CTE 재귀쿼리 이용하시면 됩니다..
하기 쿼리 참고하세요..
---쿼리시작---
;with tblA(Key2,Name,HP,사용가능쿠폰) As
(
Select 1,'홍길동','010-0000-0001',10 Union All
Select 2,'김춘수','010-0000-0002',5 Union All
Select 3,'광개토','010-0000-0003',10 Union All
Select 4,'이순신','010-0000-0004',20 Union All
Select 5,'김장군','010-0000-0005',30
)
,tblB(Key2,Name,HP,사용가능쿠폰,seq) As
(
Select
a.Key2
,a.Name
,a.HP
,a.사용가능쿠폰
,1 As seq
From tblA a
Union All
Select
a.Key2
,a.Name
,a.HP
,a.사용가능쿠폰
,a.seq + 1 As seq
From tblB a
Where a.seq < a.사용가능쿠폰
)
Select
a.Key2
,a.Name
,a.사용가능쿠폰
,a.seq
From tblB a
Order By a.Key2 Asc
,a.Name Asc
,a.seq Asc