查找函数基于多个字段的连接

时间:2015-12-09 16:58:40

标签: sql reporting-services ssrs-2008-r2 lookup

enter image description here

上面的图片是我想要报告的方式。 #expiry和expiry是dataset1,#delete和delete来自dataset2。我正在使用矩阵来创建此报告。到期数据看起来不错,但是当我尝试将数据集2用于删除行(使用查找功能)时,删除部分的数据是错误的。有什么方法可以使用dataset2作为我的报告或使用基于组织和日期字段的查找功能连接。 SSRS 2008 r2 感谢。

1 个答案:

答案 0 :(得分:0)

是 - 您可以将两个文本字段与& 组合在一起,以便在 LOOKUP 中使用唯一标识符。

=LOOKUP(Fields!ORGANIZATION.Value & "|" & CSTR(Fields!DATE.Value), Fields!ORGANIZATION.Value & "|" & CSTR(Fields!DATE.Value),  Fields!DELETE.Value, "DataSet2")

<强>更新 如果您事先无法加入数据集,并且您的组织和日期可能不会同时出现,则需要添加所有可能性。有两种方法可以做到这一点。

您可以将当前的 dataset1 查询加入到包含所有可能的ORG /日期组合的查询中。

OR

您可以仅使用日期和组织创建单独的数据集,并将表格作为其基础。然后,你需要使用 LOOKUP 同时获得 EXPIRY DELETE

对于任何一种方法,您都需要这样的查询才能获得所有组合:

DECLARE @StartDate DATE = '2015-11-01';
DECLARE @EndDate DATE = '2015-11-30';

;WITH Dates AS (
    SELECT @StartDate AS myDate
    UNION ALL
    SELECT DATEADD(D ,1 ,myDate) as myDate
    FROM cte
    WHERE DATEADD(D, 1, myDate) <=  @EndDate
)

SELECT myDate, ORGANIZATION 
INTO #TEMP_ORG_DATES 
FROM Dates 
CROSS JOIN (SELECT DISTINCT ORGANIZATION FROM YourTable) 

您可以将此TEMP表用作表格基础,或者将此表格右键加入到当前日期和ORG的EXPIRY查询中。

Return all possible combinations of values on columns in SQL