0

与えられた:

  • SQL Server 2008 R2
  • SSRS 2008
  • 謙虚なプログラマー

次の 2 つのテーブルを検討してください。

CREATE TABLE PERSON
(
    PersonID INT,
    Name VARCHAR(100)
)

CREATE TABLE PERSON_EXTENDED
(
    PersonExtendedID INT,
    PersonID INT,
    DOB DATETIME,
    FavoriteColor VARCHAR(100)
)

さらに、それらの関係を示唆するテーブルを結合する次のクエリを検討してください。

SELECT
    *
FROM
    PERSON AS P
    JOIN PERSON_EXTENDED AS PE ON (P.PersonID = PE.PersonID)

全体的な概念を説明するために、SSRS レポートのフィールド選択パラメーターを設定するストアド プロシージャを作成したいと思います。次に、選択したパラメーターを使用して、選択したフィールドでレポートを作成する別のストアド プロシージャに引数として渡します。

私の考えでは、最初は次のようなものでしたが、2 つの問題が生じます。最初に、両方のテーブルで 1 と 2 の順序が重複しています。2 番目の重複列名「PersonID」。

SELECT
    C.COLUMN_NAME,
    C.ORDINAL_POSITION
FROM
    INFORMATION_SCHEMA.columns AS C
WHERE
    C.TABLE_NAME = 'PERSON'
    OR C.TABLE_NAME = 'PERSON_EXTENDED'

何かご意見は?これをスケーラブルな方法で行い、ある種の「表示名」フィールドを含めて、エンド ユーザーが PersonID を処理する必要がなく、「個人識別」を処理できるようにすると、追加のクレジットが得られます。

4

1 に答える 1

0

素晴らしい記事!

この記事は正しい方向への大きな一歩であり、実際には完全な解決策になる可能性があります. 同様の状況にある他の誰かの答えになるのに十分な関連性があることは確かです.

コメントの 1 つは特に興味深いものです。

こんにちはハリ、複数値パラメーターを処理するときに、列を非表示にする式の代替形式を使用しました。

=IIF(Filter(Parameters!MultiOption.Value,"6",true).Length>0,False,True)

これは、パラメーター リストで選択されている場合にこの列を表示することを意味します。この例では、6 がラベルの ID です。

私が持っていたデータセットは非常に小さかったので、クエリを調整する手間は重要ではありませんでした。

ただし、これは非常にリソースを集中的に使用することになるのではないかと心配しています。

于 2012-12-12T21:43:49.013 に答える