데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

5개의 컬럼 데이터를 조합하여 13가지의 경우의 수를 대입하여  1개~최대 13개까지 로우가 나올수 있습니다

 

Declare @Temp Table
(
 몸체A품번 Int, 몸체A품명 varchar(10), 몸체A수량 int,
 몸체B품번 Int, 몸체B품명 varchar(10), 몸체B수량 int,
 A타입품번 Int, A타입품명 varchar(10), A타입수량 int,
 B타입품번 Int, B타입품명 varchar(10), B타입수량 int,
 날개품번 Int, 날개품명 varchar(10), 날개수량 int
);

 

Insert Into @Temp Values (1,'몸체A',10, 2,'몸체B',3, 3,'A타입',5, 4,'B타입',12, 5,'날개',43);
Insert Into @Temp Values (1,'몸체A',20, 2,'몸체B',10, 3,'A타입',10, 4,'B타입',5, 5,'날개',12);
Insert Into @Temp Values (1,'몸체A',20, 2,'몸체B',18, 3,'A타입',5, 4,'B타입',10, 5,'날개',50);

 

Select * From @Temp;

 

/* 적용할 순서 - 최고 적은수량이 수량이됨

1.  몸체A(1EA)+ A타입(1EA)+ 날개(2EA)
2.  몸체B(1EA)+ A타입(1EA)+ 날개(2EA)
3.  몸체A(1EA)+ B타입(1EA)+ 날개(2EA)
4.  몸체B(1EA)+ B타입(1EA)+ 날개(2EA)

5.  몸체A(1EA)+ A타입(1EA)
6.  몸체B(1EA)+ A타입(1EA)
7.  몸체A(1EA)+ B타입(1EA)
8.  몸체B(1EA)+ B타입(1EA)

9.  몸체A(1EA)
10. 몸체B(1EA)

11. A타입(1EA)
12. B타입(1EA)
13. 날개(1EA)
*/

 

1개의 Row로 13가지의 경우수를 차례대로 대입 차감하여 경우의 수를 모두 Row로 표시해줘야합니다.

1개가 나올수 있고 여러개의 Row가 나올수 있습니다.

대입은 몸체A (1EA): 몸체B (1EA): A타입(1EA) : B타입(1EA): 날개(2EA) 로 날개는 2개씩 차감해야합니다.

 

해당 경우의 최소갯수가 해당 경우의수의 수량입니다.

- 몸체A(1EA)+ A타입(1EA)+ 날개(2EA) = 10개+ 5개+ 21개(43개/2) = 5개 

A타입이 5개로 다른제품이 많아도 5개가됩니다.

 

 

경우의수가 많아서 커서를 활용해볼까 했는데 커서를 사용하지 않고 가능할것 같은데

좋은 방법이 생각이 안나네요 몇일동안 생각을 해봐도 떠오르질 않네요

 

 

--1. 몸체A 10개, 몸체B 3개, A타입 5개, B타입 12개, 날개 43개 일경우
1.  몸체A(1EA)+ A타입(1EA)+ 날개(2EA) = 10개+  5개+ 21개(43개/2) = 5개  
2.  몸체B(1EA)+ A타입(1EA)+ 날개(2EA) =  3개+  0개+ 16개(33개/2) = 0개
3.  몸체A(1EA)+ B타입(1EA)+ 날개(2EA) =  5개+ 12개+ 16개(33개/2) = 5개
4.  몸체B(1EA)+ B타입(1EA)+ 날개(2EA) =  3개+  7개+ 11개(23개/2) = 3개

5.  몸체A(1EA)+ A타입(1EA)     =  0개+  0개+    = 0개
6.  몸체B(1EA)+ A타입(1EA)     =  0개+  0개+    = 0개
7.  몸체A(1EA)+ B타입(1EA)     =  0개+  4개+    = 0개 
8.  몸체B(1EA)+ B타입(1EA)     =  0개+  4개+    = 0개

9.  몸체A(1EA) = 0개
10. 몸체B(1EA)  = 0개

11. A타입(1EA)  = 0개
12. B타입(1EA)  = 4개
13. 날개(1EA)   = 17개

 

--2. 몸체A 20개, 몸체B 10개, A타입 10개, B타입 5개, 날개 12개 일경우
1.  몸체A(1EA)+ A타입(1EA)+ 날개(2EA) = 20개+ 10개+  6개(12개/2) = 6개
2.  몸체B(1EA)+ A타입(1EA)+ 날개(2EA) = 10개+  4개+  1개(2개/2)  = 1개
3.  몸체A(1EA)+ B타입(1EA)+ 날개(2EA) = 14개+  5개+  0개(0개/2)  = 0개
4.  몸체B(1EA)+ B타입(1EA)+ 날개(2EA) =  9개+  5개+  0개(0개/2)  = 0개

5.  몸체A(1EA)+ A타입(1EA)     =  14개+ 3개+    = 3개
6.  몸체B(1EA)+ A타입(1EA)     =   9개+ 0개+    = 0개
7.  몸체A(1EA)+ B타입(1EA)     =  11개+ 5개+    = 5개 
8.  몸체B(1EA)+ B타입(1EA)     =   6개+ 0개+    = 0개

9.  몸체A(1EA) = 0개
10. 몸체B(1EA)  = 0개

11. A타입(1EA)  = 0개
12. B타입(1EA)  = 0개
13. 날개(1EA)   = 0개

 

--3. 몸체A 20개, 몸체B 18개, A타입 5개, B타입 10개, 날개 50개 일경우
1.  몸체A(1EA)+ A타입(1EA)+ 날개(2EA) = 20개+  5개+ 25개(50개/2) =  5개
2.  몸체B(1EA)+ A타입(1EA)+ 날개(2EA) = 18개+  0개+ 20개(40개/2) =  0개
3.  몸체A(1EA)+ B타입(1EA)+ 날개(2EA) = 15개+ 10개+ 20개(40개/2) = 10개
4.  몸체B(1EA)+ B타입(1EA)+ 날개(2EA) = 18개+  0개+ 10개(20개/2) =  0개

5.  몸체A(1EA)+ A타입(1EA)     =   5개+ 0개+    = 0개
6.  몸체B(1EA)+ A타입(1EA)     =  18개+ 0개+    = 0개
7.  몸체A(1EA)+ B타입(1EA)     =   5개+ 0개+    = 0개 
8.  몸체B(1EA)+ B타입(1EA)     =  18개+ 0개+    = 0개

9.  몸체A(1EA) = 5개
10. 몸체B(1EA)  = 18개

11. A타입(1EA)  =  0개
12. B타입(1EA)  =  0개
13. 날개(1EA)   = 20개

No. Subject Author Date Views
6938 쿼리문 질문 드립니다. [3] 카루카루 2013.06.27 5305
6937 게시판에서 예약게시를 만들면 정렬 쿼리는 어떻게 해야 할까요.. [1] 고쓰 2013.06.27 4375
6936 parallel query worker thread was involved in a deadlock 솔이 2013.06.27 5124
6935 첨부 파일과 같은 결과를 루프 없이 구하는 법 [2] 박진수_290099 2013.06.27 4855
6934 쿼리질문드립니다. [1] 황금용이 2013.06.26 4473
6933 MSSQL 2000 포트 보안 관련 문의 [1] moonvoy 2013.06.25 4778
6932 DB 컨넥션이 느려지는 경우 [2] 잠수쟁이 2013.06.25 5269
6931 Azure에 mssql 설치시 사전에 고려해야할 사항 문의 [1] js87 2013.06.25 5294
6930 미러링 오류 관련 질문입니다. [1] 무식최고 2013.06.25 5152
6929 같은 서버 다른 인스턴스간 테이블 데이터 복사와 업데이트(중복과 성능 고려포함) [1] 슈팅스타 2013.06.25 8151
» 데이터 조합하여 경우의수 순차적 감산 데이터 추출 [14] 다초 2013.06.25 5221
6927 DB 테이블 변경 내역을 알수 있는 쿼리가 있을까요? [1] 쿨한너구리 2013.06.25 6333
6926 엔진튜닝관리자 사용시 오류가 납니다. 전념 2013.06.24 5474
6925 행을 열로 보여주기 쿼리 질문이 있습니다.. [2] alima 2013.06.24 5654
6924 Classic ASP에서 SQL에 XML 데이터 혹은 바이너리 파일 저장은 어떻게 하나요? [2] 김우_281841 2013.06.24 7459
6923 모든사원의 최종학력 구하기 [4] q0822kang 2013.06.24 7021
6922 insert시 궁금점.... [4] SQL왕왕초보 2013.06.24 3911
6921 Data Modeling 프로그램 추천이요 [1] 홍훈아 2013.06.24 5675
6920 Full Text Search 에 관한 질문드립니다.. FREETEXT 관련입니다 박대준님 2013.06.23 4152
6919 1045 오류 인데 이건 무슨오류인가요? [1] 류트 2013.06.22 5972





XE Login