SSRS - 根据来自两个不同数据集的标准显示字段

时间:2017-10-04 19:18:01

标签: sql visual-studio reporting-services

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

enter image description here

你会看到很容易拼写的字段,我要做的是创建另一个表格,其数据只显示两者中不匹配的数据,所以在给出的例子中,它会显示声明号,除了CLAIM987654321(这是唯一的唯一标识符,与处理事物的方式相同的日期可能不同时)的转换日期和数量。

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

遗憾的是,没有可能的方法将数据与我的知识相结合,可能有,但我不确定如何做到这一点。以下是我在SSMS中使用的查询。

enter image description here enter image description here

服务器已经按照以前的连接进行链接,但是如果有一种方法可以将数据操作到一个拉动中,我对此并不熟悉。

新更新:我把一个非常丑陋的链接服务器拉出来了,但它只是拉动两者中存在的数据,我希望数据不那么好。enter image description here

1 个答案:

答案 0 :(得分: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