4

SSRS 보고서가 있습니다. 그것은 다음과 같습니다이 SSRS 보고서를 그룹화하는 방법?

enter image description here

그것의 정의는 다음과 같습니다 당신이 A는 G.에 그 숫자가 그룹화 된 다른 열의 숫자 만 잔뜩입니다 볼 수 있듯이

enter image description here

A, B, C를 차례로 선택합니다. 보고서의 각 행에 대해 D, E, F, G 열은 세부 데이터입니다. 문제는 각 그룹 (A, B, C 그룹으로 묶음)에 대해 D & E 열의 모든 행이 필요하다는 것입니다. F & G 열의 경우 중복을 원하지 않습니다. 예를 들어 첫 번째 그룹의 경우 FG 열이 중복 된 것을 볼 수 있습니다. 이 두 번 나타납니다. 기본적으로 내가 원하는 것은 이런 일이 (중복이 상기 보고서 결과에 비해 제거주의)이다

enter image description here

노란색 배경으로 데이터를 한 번 봐, 그게 내가 제거 중복 원하는 부분입니다. SSRS에서 이것을 구현하는 방법을 모르겠습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 테스트중인 보고서는 https://www.dropbox.com/s/qxvloaeuj31m0mj/Report1.rdl?dl=1에서 다운로드 할 수 있습니다. 이 간단한 보고서는보다 복잡한 보고서에서 만난 문제를 격리하기 위해 작성되었습니다. 나는 논리를 바꿀 수없고 이것을 구현할 방법을 찾아야한다. 미리 감사드립니다.

+0

당신은 당신이 논리를 변경할 수 없습니다 말한다; 어떤 논리를 바꿀 수 없습니까? 여기 손은 묶여 있니? –

+0

@ R.Richards 보고서 데이터를 생성하는 데이터베이스에서 저장 프로 시저를 변경할 수 없다는 의미입니다. 내 질문에 사용한 보고서는 실제 보고서의 단순화 된 버전입니다. 노란색 배경 부분을 하위 보고서의 매개 변수로 그룹화 열의 값을 사용하는 하위 보고서로 만들려고했습니다. 실제로 작동하지만 하위 보고서가 각 그룹마다 실행되기 때문에 성능이 허용되지 않습니다. –

+0

알았어. 전형적으로, 맞지? 현재 저장 프로 시저의 출력을 임시 테이블에 삽입 한 다음 데이터를 작업하여 보고서에 저장하기 전에 필요한 위치로 가져 오는 방법은 무엇입니까? 가능한? 나는 그것을했다. 나는 항상 그것을 좋아하지 않는다, 그러나 그것은 작동한다. –

답변

3

여기에 제가 있습니다. 내가 원하는 것은 대부분 질문에 포함 된 마지막 스크린 샷과 같다고 가정합니다.

내가 만든 RDL을 가져 왔습니다. 고마워! 이런 일을 훨씬 쉽게 할 수 있습니다.

보고서의 SQL은 모의 데이터이며, 우리가 시도하고있는 것이 좋습니다. 지금부터 데이터를 소싱하는 저장 프로 시저가 비슷한 것을 제공한다고 가정합니다. 결과를 임시 테이블로 가져와 작업하고 데이터를 변경/형성 한 다음 보고서로 반환하는 것에 대한 의견을 남겼습니다. 이것이 내가이 답변에서 제시 할 전술입니다.

RDL의 업데이트 된 SQL은 다음과 같습니다. 몇 줄을 간략하게 설명했습니다.

SELECT * 
INTO #Report 
FROM (VALUES(1,4,1,1,10,20,30), 
(1,4,1,2,11,20,30), 
… 
(22,666,7,14,23,150,6) 
) AS t(A, B, C, D,E,F,G); 

SELECT A.A, A.B, A.C, A.D, A.E -- selecting columns A thru E 
FROM #Report A 

UNION ALL 

SELECT DISTINCT B.A, B.B, B.C, B.F, B.G -- union in columns F and G 
FROM #Report B 
ORDER BY 1, 2, 3 

DROP TABLE #Report 

이 모든 것은 원래 결과가있는 임시 테이블을 만들 때 SELECT INTO을 사용하는 것입니다. 그런 다음 결과를 분할하고 UNION 모든 항목을 모두 맨 위에 쌓아두기 만하면됩니다. 또한 중복을 제거하려는 DISTINCT을 사용하십시오.

제공된 RDL에서이 기능을 사용하려면 Tablix에서 F 및 G 열을 제거하고 SQL을이 ID로 바꿔야합니다. 이것은 Tablix가 디자인 모드에서 보이는 것입니다.

enter image description here

지금, 당신은 변경할 수 없습니다 저장 프로 시저가 있다고 언급했다. 저장 프로 시저의 결과를 임시 테이블로 가져 오려면 2 가지 작업을 수행해야합니다.

먼저 프로 시저의 결과에서 동일한 모양의 임시 테이블을 만듭니다. 테이블은 실제로 임시 테이블 일 필요는 없습니다. 당신은 임시 테이블이 아닌 테이블로 만들 수 있고 나중에 드롭 할 수도 있습니다.임시 테이블의 경우, DDL은 다음과 같이 보일 것입니다 :

CREATE TABLE #Report (A int, B int, C int, D int, E int, F int, G int) 

그런 다음 당신이 임시 테이블에 저장 프로 시저의 결과를 삽입합니다.

INSERT INTO #Report 
EXEC usp_MyStoredProcedure 

그리고 아니, 당신이 궁금해 경우, 저장 프로 시저와 간단한 SELECT INTO 옵션이 없습니다. 많은 사람들이가 있었으면 좋겠다.

이것이 결국 끝나면, 보고서의 SQL은 다음과 같습니다.

CREATE TABLE #Report (A int, B int, C int, D int, E int, F int, G int); 

INSERT INTO #Report 
EXEC usp_MyStoredProcedure; 

SELECT A.A, A.B, A.C, A.D, A.E -- grabbing columns A thru E 
FROM #Report A 
UNION ALL 
SELECT DISTINCT B.A, B.B, B.C, B.F, B.G -- union in columns F and G 
FROM #Report B 
ORDER BY 1, 2, 3 

이 보고서는 미리보기 모드에서 어떻게 보이는지입니다 :

enter image description here

희망이 당신을 도와줍니다.

2

SQL 대신 SSRS 기반 솔루션이 필요한 경우 인접한 그룹을 사용하여 두 개의 데이터 세트를 별도로 제어 할 수 있습니다. 당신의 행 그룹에서

  • , 당신의 (Details) 그룹을 마우스 오른쪽 버튼으로 클릭하고 Add Group > Adjacent After...을 선택합니다. [F]으로 테이블 릭스 그룹 표시 창 그룹에서
  • 새로운 (F) 행 그룹을 마우스 오른쪽 단추로 클릭하고 그룹 등록 정보로 이동합니다.
  • 추가 그룹 식을 추가하고 그룹을 [G]에 추가하십시오. 그룹의 이름을 FG로 변경할 수도 있습니다.
  • 보고서의 F 및 G 필드를 새 행 (FG 그룹)으로 이동하고 빈 열을 삭제하십시오.

세부 정보 그룹에는 데이터 세트의 모든 행, 즉 D와 E의 모든 인스턴스가 계속 표시됩니다. FG 그룹에는 각 A/B/C 그룹 내에서 F와 G의 고유 한 조합 만 표시됩니다.

Report1 preview with FG group added