【问题标题】:SSRS - Display fields based on criteria from two different datasetsSSRS - 根据来自两个不同数据集的标准显示字段
【发布时间】:2017-10-04 19:18:00
【问题描述】:

我正在编写一份 SSRS 报告,我从两个不同的数据集(创造性地命名为 DataSet1 和 DataSet2)中提取索赔数据,并在此处创建两个单独的表和信息:

您会看到这些字段很容易拼写出来,我要做的是创建另一个表,其中的数据仅显示两者都不匹配的数据,因此在给出的示例中,它将显示声明号, trans 日期,以及 CLAIM987654321 以外的所有内容的数量(这是唯一的唯一标识符,因为处理事情的方式可能会有所不同。)

我知道如何仅基于查询进行显示,但不确定如何进行多数据集比较。

遗憾的是,据我所知,没有办法将数据结合起来,但我不确定如何做到这一点。以下是我在 SSMS 中使用的查询。

服务器已经根据之前的连接进行了链接,但是如果有办法将数据操作到单个拉取中,我对此并不熟悉。

新更新:我拼凑了一个非常丑陋的链接服务器拉取,但它只是拉取两者中都存在的数据,而且我想要的数据也不是。

【问题讨论】:

  • 如果这是您上一个问题的重复,那么您需要删除旧问题。您之前的问题询问了子报告之间的比较。要比较数据集之间的数据,您需要使用查找函数 docs.microsoft.com/en-us/sql/reporting-services/report-design/… 或者(可能更简单)只是创建包含所需数据的第三个数据集。
  • 我删除了之前的一个,因为我将它从子报表移到了主报表中。

标签: sql visual-studio reporting-services


【解决方案1】:

您需要使用FULL JOIN

因此,如果您只想查看两个表中都没有出现的数据,那么我会这样做。 (为了清楚起见,我没有使用完整的限定词,但你会明白的)

SELECT 
          COALESCE(c.ClaimNo, r.CHK_claim_number) AS [Claim Number] -- COALESCE will get first non null value
        , COALESCE(d.OtherPayer1Paid, r.CHK_payable_cost) AS [Amount]
        , COALESCE(c.TransactionDate, d.CHK_paid_date) AS [Transaction Date]
    FROM EDI_Claims c -- Full join shows all records, null will show for missing records
        JOIN EDI_ClaimDetails d ON c.id =d.claimid
        FULL JOIN PaidClaims_by_CheckRun r ON r.CHK_claim_number = c.claimno
    WHERE d.OtherPayer1Paid != 0 
        AND (r.CHK_ClaimNUmber IS NULL OR c.ClaimNo IS NULL) -- only show when one side of the join fails
    ORDER BY c.TrandactionDate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多