여기에 제가 있습니다. 내가 원하는 것은 대부분 질문에 포함 된 마지막 스크린 샷과 같다고 가정합니다.
내가 만든 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](https://i.stack.imgur.com/PkL7O.png)
지금, 당신은 변경할 수 없습니다 저장 프로 시저가 있다고 언급했다. 저장 프로 시저의 결과를 임시 테이블로 가져 오려면 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](https://i.stack.imgur.com/sQlyj.png)
희망이 당신을 도와줍니다.
당신은 당신이 논리를 변경할 수 없습니다 말한다; 어떤 논리를 바꿀 수 없습니까? 여기 손은 묶여 있니? –
@ R.Richards 보고서 데이터를 생성하는 데이터베이스에서 저장 프로 시저를 변경할 수 없다는 의미입니다. 내 질문에 사용한 보고서는 실제 보고서의 단순화 된 버전입니다. 노란색 배경 부분을 하위 보고서의 매개 변수로 그룹화 열의 값을 사용하는 하위 보고서로 만들려고했습니다. 실제로 작동하지만 하위 보고서가 각 그룹마다 실행되기 때문에 성능이 허용되지 않습니다. –
알았어. 전형적으로, 맞지? 현재 저장 프로 시저의 출력을 임시 테이블에 삽입 한 다음 데이터를 작업하여 보고서에 저장하기 전에 필요한 위치로 가져 오는 방법은 무엇입니까? 가능한? 나는 그것을했다. 나는 항상 그것을 좋아하지 않는다, 그러나 그것은 작동한다. –