これは私の行くところです。私はあなたが望むのは、あなたが質問に含めた最後のスクリーンショットのようなものだと仮定しています。
利用可能にした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をこれに置き換える必要があります。これはTablixがデザインモードのように見えるでしょう。
は今、あなたが変更することはできませんストアドプロシージャがあることを述べました。ストアドプロシージャの結果をテンポラリテーブルに取得するには、2つのことを行う必要があります。
まず、プロシージャの結果と同じ形の一時表を作成します。テーブルは実際に一時テーブルである必要はありません。それを非一時テーブルにして後でドロップすることもできます。そして、あなたがその一時テーブルにストアドプロシージャの結果を挿入
CREATE TABLE #Report (A int, B int, C int, D int, E int, F int, G int)
:一時テーブルの場合、DDLは次のようになります。
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
これは、レポートがプレビューモードでどのように見えるかです:
ホープこれはあなたを助けます。
ロジックを変更することはできません。どのような論理を変えられないのですか?あなたの手はどこに縛られていますか? –
@ R.Richards私は、レポートデータを生成するデータベース内のストアドプロシージャを変更できないことを意味します。私の質問で使用したレポートは、実際のレポートの単純化されたバージョンです。私は、黄色の背景部分を、サブレポートのパラメータとしてグルーピング列の値を使用するサブレポートにしようとしました。それは実際には機能しますが、サブレポートが各グループごとに実行されるため、パフォーマンスは受け入れられません。 –
入手しました。典型的な、本当ですか?現在のストアドプロシージャの出力を一時テーブルに挿入し、レポートに出力する前にデータを処理する必要がありますか?可能?私はそれをしました。私はいつもそれが好きではないが、それは動作する。 –