0

SQL テーブルからレポートを作成する SSRS レポートがあります。

 id  type    name
 1   fruit   wilk
 2   fruit   scot
 3   paper   jon
 4   pen     brad
 5   tape    lin
 6   water   james

レポートには 2 つのデータ セットがあります。1 つはレポートのクエリをフィードし、もう 1 つはパラメータにデータをフィードします。したがって、レポートでは、複数値パラメーターはデータセット 2 から値を取得します。

-- dataset1::  
select ID, TYPE, name from table1 where type in (@types)

-- dataset2::
select TYPE from table1

レポートは、ドロップダウン リスト (複数選択リスト) から選択されたタイプに基づいて生成されます。

たとえば、「果物」を選択すると、次のレポートが表示されます。

スコット・ウィルク

「水」を選択した場合:

ジェームズ

ここで、「TAPE」、「pen」、「paper」のすべての値の名前を作成する必要があります。たとえば、「STATIONARY」という名前を付けて、ドロップダウン リストに次の項目のみが表示されるようにします。

果物、固定、水

ドロップダウン リストから「STATIONARY」を選択すると、レポートに次のように表示されます。

jon、brad、lin (これら 3 つすべてに、紙、ペン、テープなどの文房具があります)

タイプを「STATIONARY」および「water」として選択すると、次のように表示されます。

ジョン、ブラッド、リン、ジェームズ

4

2 に答える 2

1

ここのお尻から。

テーブルにカテゴリフィールドを追加することを検討してください。したがって、果物と水については「食品」と呼ばれるカテゴリを設定でき、ペン、紙、テープについては「固定」と呼ばれるカテゴリを作成できます。

「カテゴリ」と呼ばれる別のデータセットをレポートに追加します。

SELECT Category FROM table1

@Categoryと呼ばれる新しいデータセットの複数選択である別のパラメーターを追加します。

メインクエリに次を追加します。

...AND Category IN (@Category)

編集

このアドバイスは、データベースの正規化を完全に無視することに注意してください。それはあなたの質問の意図ではないことを理解していますが、それはあなたが常に考慮すべきものです。私の場合は、カテゴリテーブルを追加することもできます。次に、「table1」と呼んで、カテゴリテーブルのIDを指す外部キーを追加します。タイプ列でもこの問題を確認できます。果物が複数回使用されていることに注目してください。

于 2012-12-17T16:44:08.160 に答える
0

Itemこのために、とという別のテーブルをいくつか作成しますItemType

ItemTypeItemTypeId(自動インクリメント主キー) と の2 つのフィールドがありNameます。ItemType次のような値になります。

ItemTypeId    Name
1             Food
2             Stationery

ItemItemId(自動インクリメント主キー)NameItemTypeId(ItemType上記の表から) の3 つのフィールドがあります。次のようになります。

ItemId  Name   ItemTypeId
1       Fruit  1
2       Paper  2
3       Pen    2
4       Tape   2
5       Water  1

フィールドを追加してItemIdフィールドをtable1削除すると、type次のようになります。

 id  ItemId  name
 1   1       wilk
 2   1       scot
 3   2       jon
 4   3       brad
 5   4       lin
 6   5       james

へのリンクからアイテムのタイプがわかりましたItemType

2 つのパラメーターを作成します:@ItemTypes@Items複数値として。

@ItemTypesテーブルから移入されItemTypeます:

SELECT ItemTypeId, Name FROM ItemType

ItemTypeIdは でValueNameLabelです。

@Itemsテーブルから入力されますが、次のようItemにパラメーターでフィルター処理されます。@ItemTypes

SELECT ItemId, Name FROM Item WHERE (ItemTypeId IN @ItemTypes)

ItemIdは でValueNameLabelです。

最初のパラメーターで選択する@ItemTypesと、2 番目のパラメーターはそのタイプのアイテムのみを表示します。

さて、あなたの質問に戻ります。主なクエリは次のようになります。

SELECT Item.Name AS ItemName, ItemType.Name AS ItemTypeName, table1.Name
FROM table1
INNER JOIN Item ON Item.ItemId = table1.ItemId
INNER JOIN ItemType ON ItemType.ItemTypeId = Item.ItemTypeI
WHERE (ItemType.ItemTypeId IN @ItemTypes)
AND (Item.ItemId IN @Items)

ここでの作業は完了したと思います。

于 2012-12-17T21:52:09.133 に答える