0

鉴于:

  • SQL Server 2008 R2
  • SSRS 2008
  • 卑微的程序员

考虑两个表:

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 报告的字段选择参数。然后使用选定的参数将其作为参数传递给另一个存储过程,该过程使用选定的字段创建报告。

我的想法最初类似于以下内容,但是产生了两个问题。首先是两个表中 1 和 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

好文章!

本文是朝着正确方向迈出的一大步,实际上可能是完整的解决方案。对于处于类似情况的其他任何人来说,它肯定是足够相关的。

其中一条评论特别耐人寻味:

嗨 Hari,我在处理多值参数时使用了另一种形式的隐藏列表达式。

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

这意味着如果在参数列表中选择了该列,则显示该列。在这个例子中,6 是标签的 id。

我有这么小的数据集,所以去定制查询的麻烦并不重要。

我担心这将是巨大的资源密集型。

于 2012-12-12T21:43:49.013 回答