2012-01-23 2 views
1

총계정 원장에 대한 여백 보고서를 작성하고 있는데 기본 작업이 있지만 특정 논리를 기반으로 행을 병합해야하는 이유가 무엇인지 모르겠지만 ...열 기반 논리에서 SQL 데이터 행을 병합하는 방법은 무엇입니까?

내 데이터보기 같은 :

value1  value2  location date   category      debitamount creditamount 
2029  390   ACT  2012-07-29 COSTS - Widgets and Gadgets 0.000   3.385 
3029  390   ACT  2012-07-24 SALES - Widgets and Gadgets 1.170   0.000 

그리고 내 보고서는과 같이 함께 두 개의 열을 표시 할 필요가 :

plant date   category    debitamount creditamount 
ACT  2012-07-29 Widgets and Gadgets 1.170   3.385 

논리는 그들이 값 1과 값 2 열에 포함 조인 할 수 있습니다. 값 1의 마지막 3 자리와 값 2의 모든 3 자리가 같은 경우 행을 결합해야합니다. 또한 값 1의 첫 번째 숫자는 판매에 대해 항상 2이고 비용에 대해서는 3입니다. (중요하지 않은지 확실하지 않음)

IE 2029-390은 고객에게 판매되는 위젯 및 장치에 대해 수익을 올리는 반면 3029-390은 공급 업체로부터 위젯 및 가젯을 구입하는 데 지출되는 돈.

이렇게 프로그래밍 방식으로 저장 프로 시저에서 어떻게 할 수 있습니까? (SQL Server 2008 R2)

편집 : 3000을 하나의 변수 테이블에로드하고 2000을 다른 테이블에로드 한 다음 value2와 right (value1, 3)에서 둘을 조인 할 수 있습니까? 아니면 그런 식으로?

답변

1

이 시도 :

SELECT RIGHT (LTRIM (RTRIM (값 1)), 3) 1, 값 2, MAX (위치), MAX (날짜), MAX (카테고리), SUM (debitamount) SUM RIGHT BY 표 그룹에서 (creditamount) (LTRIM (RTRIM (값이)), 3),

그것은 신용 금액 및 직불 금액을 합산합니다 값 2. value2의 경우 항상 같고 value1의 마지막 3 자리가 같으면 다른 열의 최대 문자열 값을 선택합니다.

+0

도움이되는 경우 올바른 것으로 표시하십시오. 궁금한 점이 있으면 의견을 보내 드리겠습니다. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

도움을 주셔서 감사합니다. 솔직히 MAX()를 사용할 수 있는지 몰랐습니다. 결국에는 3000 및 2000을 자체 테이블 변수에로드 한 다음 메서드를 사용하여 결합했습니다. 매력처럼 일했습니다. 감사!!! – bluehiro

+0

내가 추가 할 수있는 유일한 질문은 다음과 같을 것입니다. 카테고리 열이 항상 비용을 선택하는 대신 판매 및 위젯 및 가젯을 선택하도록하려면 어떻게해야합니까? 보고서 데이터는 정확하지만 범주 이름의 처음 7자는 잘못된 것입니다. – bluehiro

관련 문제