假设:
考虑两个表:
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的重复常数。其次是重复列名“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,但可以处理“个人识别”。
答案 0 :(得分:0)
本文是朝着正确方向迈出的一大步,实际上可能是完整的解决方案。对于处于类似情况的任何其他人来说,这当然足够相关。
其中一条评论特别有趣:
嗨Hari,我使用了隐藏列表达式的替代形式 处理多值参数。
= IIF(筛选(参数MultiOption.Value, “6”,真)。长度>!0,假,真)
如果在参数中选择了此列,则表示显示此列 名单。在此示例中,6是标签的ID。
我有一个这么小的数据集,所以不得不去剪裁 查询并不重要。
我担心这会占用大量资源。