2014-12-03 2 views
0

의 내가 테이블 제품 및 테이블 각 위해에서 판매 제품 무엇인지 지정 테이블 '제품'을 사용 주문 있다고 가정 해 봅시다.테이블 레지스터를 임시 테이블의 열로 변환하는 방법은 무엇입니까?

이제 각 제품이 서로 다른 열에 있고 각 제품에 판매 된 제품 수와 판매해야하는 판매자 수를 계산하는 Excel로 내보내기 보고서를 작성하려고합니다.

예 :

제품 :

id | desc | target_per_month 
------------------------------- 
1 | prepaid | 1000 
2 | pospaid | 500 

주문 :

id | seller | product_id | date 
-------------------------------------- 
1 | clark | 1   | 2014-12-11 
2 | kent | 1   | 2014-12-10 
3 | kent | 2   | 2014-12-11 
4 | kent | 1   | 2014-12-10 
5 | clark | 2   | 2014-12-09 

내가 원하는 무엇 :

seller | prepaid_sold | prepaid_target | prepaid_left | pospaid_sold | pospaid_target | pospaid_left 
------------------------------------------------------------------------------------------- 
clark | 1   | 1000   | 999   | 1   | 500   | 499 
kent | 2   | 1000   | 998   | 1   | 500   | 499 

어떻게 것이라고 나는이 타하려는 경우 등이 select보기 새로운 제품을 받아들이 기 위해 역동적이 될 수 있습니까? 지금은 새로운 제품마다 3 열을 수동으로 넣는 방식입니다. 매우 끔찍한 일입니다!

답변

0

여기 까다로운 질문이 있습니다. 다른 접근법을 시도해야하지만 귀하의 질문에 대답하기 위해 용어로 쿼리 그룹화 결과를 기반으로 동적으로 "CREATE TABLE"문을 만들 수 있다고 말하고 싶습니다. 너는 필요해. 당신은 쿼리에 의해 그룹을 생성하고 커서를 생성하고 루프를 생성하여 테이블 생성을위한 SQL 문을 완료해야합니다. 구문을 사용하면 "EXEC (@MySqlStatement)"를 사용하여 테이블을 만들 수 있습니다. 여기서 @MySqlStatement는 "CREATE TABLE"문에 대한 텍스트가 들어있는 변수입니다.

그런 다음 동일한 루프를 사용하여 데이터가있는 새 테이블을 수행 할 수 있습니다.

나는이 접근법으로 작업 할 수 있다고 확신하지만 작업량과 테스트의 양 때문에 결코 시도하지 못했습니다.

고려해야 할 또 다른 사항은 t-SQL 스크립트를 어디에 호출 할 것인가입니다. 스토어 프로 시저를 빌드하면 정상적으로 작동하지만 Excel 프로 시저에서는 스토어 프로 시저를 사용할 수 없습니다 (최소한 순식간에 진행되지는 않습니다). 다중 명령문 테이블 함수를 빌드하는 경우, 이러한 종류의 함수는 사용할 수있는 t-SQL 언어 기능과 관련하여 몇 가지 제한 사항이 있으므로 특정 작업을 수행 할 수 없습니다.

다른 옵션을 고려하려는 경우 결과 집합을 기반으로 필요한 모든 열이있는 행렬을 만들 수 있으므로 SSRS가 가장 좋습니다. 기본적으로 모든 작업이 수행됩니다. 이 보고서는 Excel로 내보낼 수 있습니다.

다른 옵션은 ... 피벗 테이블, 매크로,에 의해,이 도움이

희망을 현재 가지고 엑셀에서 데이터를 변환 행의 종류와 더 논리적 resulset를 만드는 것입니다.

관련 문제