与えられた:
- 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 を処理する必要がなく、「個人識別」を処理できるようにすると、追加のクレジットが得られます。