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
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1291
6943 가로 세로 변경하고자 [2] 은빛유니콘 2013.06.28 5679
6942 물리적으로 다른 2개의 서버간 링크드 서버 INSERT 에러 입니다. [2] 재호 2013.06.28 8227
6941 첨부한 쿼리좀 봐주세요 ... [7] 개발자2 2013.06.28 4567
6940 쿼리 질문입니다. [1] 세상에밝음을 2013.06.28 4447
6939 쿼리 질문드릴게요..ㅜ [1] 놉태 2013.06.27 4694
6938 쿼리문 질문 드립니다. [3] 카루카루 2013.06.27 5319
6937 게시판에서 예약게시를 만들면 정렬 쿼리는 어떻게 해야 할까요.. [1] 고쓰 2013.06.27 4397
6936 parallel query worker thread was involved in a deadlock 솔이 2013.06.27 5128
6935 첨부 파일과 같은 결과를 루프 없이 구하는 법 [2] 박진수_290099 2013.06.27 4878
6934 쿼리질문드립니다. [1] 황금용이 2013.06.26 4493
6933 MSSQL 2000 포트 보안 관련 문의 [1] moonvoy 2013.06.25 4796
6932 DB 컨넥션이 느려지는 경우 [2] 잠수쟁이 2013.06.25 5284
6931 Azure에 mssql 설치시 사전에 고려해야할 사항 문의 [1] js87 2013.06.25 5310
6930 미러링 오류 관련 질문입니다. [1] 무식최고 2013.06.25 5167
6929 같은 서버 다른 인스턴스간 테이블 데이터 복사와 업데이트(중복과 성능 고려포함) [1] 슈팅스타 2013.06.25 8191
» 데이터 조합하여 경우의수 순차적 감산 데이터 추출 [14] 다초 2013.06.25 5246
6927 DB 테이블 변경 내역을 알수 있는 쿼리가 있을까요? [1] 쿨한너구리 2013.06.25 6358
6926 엔진튜닝관리자 사용시 오류가 납니다. 전념 2013.06.24 5501
6925 행을 열로 보여주기 쿼리 질문이 있습니다.. [2] alima 2013.06.24 5671
6924 Classic ASP에서 SQL에 XML 데이터 혹은 바이너리 파일 저장은 어떻게 하나요? [2] 김우_281841 2013.06.24 7487





XE Login