我正在制作SSRS报告,我从两个不同的数据集(创造性地命名为DataSet1和DataSet2)中提取索赔数据,并在此处创建两个单独的表和信息:
你会看到很容易拼写的字段,我要做的是创建另一个表格,其数据只显示两者中不匹配的数据,所以在给出的例子中,它会显示声明号,除了CLAIM987654321(这是唯一的唯一标识符,与处理事物的方式相同的日期可能不同时)的转换日期和数量。
我知道如何仅根据查询进行显示,但我不确定如何进行多数据集比较。
遗憾的是,没有可能的方法将数据与我的知识相结合,可能有,但我不确定如何做到这一点。以下是我在SSMS中使用的查询。
服务器已经按照以前的连接进行链接,但是如果有一种方法可以将数据操作到一个拉动中,我对此并不熟悉。
答案 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