0

私はこのようになりますテーブルを持っている:SSRSレポート:このような毎月/ YTDレポートを作成するにはどうすればよいですか?

------------------------------------------------------------------- 
CUSTNUM (INT), ITEMNUM (INT), MONTH (INT), YEAR (INT), AMOUNT (INT) 
------------------------------------------------------------------- 
100000, 489, 1, 2011, 4000 
100000, 489, 2, 2011, 3000 
100000, 489, 3, 2011, 5000 
100000, 587, 1, 2011, 7500 
100000, 587, 2, 2011, 6800 
100000, 587, 3, 2011, 9000 

私が作成しようとしている何が私に顧客が指定した年と月に購入している各項目を表示するレポートです。 同じページのには、各行のitemnumでグループ化された年末年始売上を持つテーブル(同じ行列の一部または必要なもの)が必要です。

最終結果は上部の月次売上と下部に購入し、各項目の年初来の概要と各顧客の要約のようなページ(多分複数ページ)でなければなりません。ここで

は、2011年3月に対してクエリを実行するとき所望の出力は次のようになります:

----------------------- 
Customer: 100000 
----------------------- 
Item Month Quantity 
----------------------- 
489  5000 
587  9000 
----------------------- 
Total 14000 

------------------------ 
Item Year-to-Date Qty 
------------------------ 
489  12000 
587  23300 
------------------------ 
Total 35300 

次のページブレークが同様のレイアウトでの新規顧客のためになります。

具体的には、クエリの側面がどのように表示されるかに苦しんでいます。私は特定の月の作業クエリを持っています - そしてwhere句からMONTHパラメータを省略すると、year-to-dateに必要なすべての行が得られますが、トップ?

ありがとうございます! SQLが報告書を作成するように設計されていません

+0

質問をより小さな質問で分割し、テストデータを含め、あなたが参照している日付のようなすべてのフィールドを含めることができます。そして期待される結果 –

+0

お返事ありがとうございます。私は、要求されたサンプルデータと所望の出力を追加しました。 –

答えて

1

あなたはSQL 2008 R2を使用している場合は、Lookup関数を使用します。この機能は以前のエディションでは使用できません。

既存のデータセットを保存してください。まだYTDについて心配する必要はありません。 特定の顧客のYTDを項目別に検索する2番目のデータセットを作成します。ルックアップ機能は、第1データセットの項目番号に基づいて第2データセット内のYTDを見つけることができる。

これが役に立ちます。

追加の答えは、ほとんどのサブレポートを忘れてしまいました。 1つのパラメータCustNumを使用し、YTDを表に表示する2番目のレポートを作成できます。これをサブレポートとしてメインレポートに追加します。テーブルフッタには良い場所があります。

+0

これは、私が探していたように思えます。 。ポストバックする。ありがとう! –

+0

さて、あなたの提案が私の解決に役立つことを願っていましたが、私たちはしばらくの間、SQL 2008に執着しています(No R2)。同じことを達成する別の方法はありますか?または、同じマトリックス内の複数の場所(隣接していない行)のデータセットから行を使用する方法について考えることができますか? –

0

、そう、レポートビルダーや他のいくつかのツールがデザインを設定することができ、エクセルにデータを抽出するように設計されています。私はあなたがこれを使用できることを願っています

declare @t TABLE (custnum int, itemnum int, month int, year int, amount int) 

DECLARE @m INT 
DECLARE @y INT 

set @m = 3 
set @y = 2011 

insert @t values(100000, 489, 1, 2011, 4000) 
insert @t values(100000, 489, 2, 2011, 3000) 
insert @t values(100000, 489, 3, 2011, 5000) 
insert @t values(100000, 587, 1, 2011, 7500) 
insert @t values(100000, 587, 2, 2011, 6800) 
insert @t values(100000, 587, 3, 2011, 9000) 

SELECT custnum customer, itemnum item, sum(amount) [Month Quantity] 
FROM @t 
WHERE MONTH = @m 
AND year = @y 
GROUP BY custnum, itemnum with rollup 

結果:

customer item  month quantity 
100000 498  5000 
100000 587  9000 
100000    14000 <---(total for this customer) 
        14000 <---(grand total for all customers) 


SELECT itemnum item, sum(amount) [Year-to-Date Qty] 
FROM @t 
WHERE year = @y 
GROUP BY itemnum with rollup 

結果:

item  Year-to-Date Qty 
489  12000 
587  23300 
      35300 
+0

私はVisual Studio 2008を使用してSSRSレポートの.rdlファイルを生成しています。申し訳ありませんが、私はVS2008とSSRSでタグ付けして以来、私は記事の中で具体的ではありませんでした。私が苦労している問題の要点は、YTDの月をどのように合計しても、同じレポート定義の中で私が照会している1か月の値を保持することです。私は行列を使っていますが、それは間違ったアプローチですか? –

+0

完全に私の悪い、私はちょうどSQLを見た。私はあなたが要求したものと同じであることに非常に近いので、あなたがそれを使うことができればと願っています。 –