首页 > 解决方案 > SSRS 报告重复标志

问题描述

我目前正在从 Great Plains Dynamics DB 制作一份关于 ssrs 的报告。

这是一个包含几列的非常简单的报告。一切正常,但在 GP 中,在创建发票或退货账单时,有时 GP 会给出相同的账单 ID。它并没有真正显示为重复,因为对于 GP,发票和退货可以/可能具有相同的 ID,因为它们不是同一类型。不要问我为什么。。

因此,对于我的报告,当我使用我的 SopNumber(Bill ID)从多个值参数开始研究时,它会为我提供正确的信息。但是现在我想在那些等于账单 ID 并且同时具有发票和退货的信息上设置一个标志。

由于 GP 对于同一个 ID 有 2 种不同类型的文件是正常的,我不能要求我的报告在不同的情况下删除退货或发票原因,发票可能是重要文件,在另一种情况下,退货.

在我的 tablix 中,我没有显示 Bill ID,因为除非存在这种“重复”,否则我不需要这些信息。

我还想在旗帜(突出显示的行)之后,在我的报告顶部,有一句话显示如下:“那些文件有冲突:000123123”。因此,有了这个显示我 ID 的信息,我现在可以进入我的多个值参数并删除这个数字。

我想实现这 2 个标志,因为我正在根据我的文件数量进行计算,如果这 2 个存在,那会使我的计算错误。

我希望你们能帮助我。如果是这样,非常感谢您提前!

我研究了几种不同的表达方式,但从未得到我想要的结果。使用前面的语句和 equals 但找不到如何使它看起来等于 Invoice 和 Return 和 SopNumber 等于相同。

select CASE SOP10200.SOPTYPE
                WHEN 1 THEN 'QUOTE'
                WHEN 2 THEN 'ORDER'
                WHEN 3 THEN 'INVOICE'
                WHEN 4 THEN 'RETURN'
                WHEN 5 THEN 'BACK ORDER'
                WHEN 6 THEN 'FULLFILLMENT ORDER'
                END AS SOPTYPE,
                sop10200.SLPRSNID,
                sop10200.XTNDPRCE as ExtendedPrice,
                sop10200.SOPNUMBE,
                iv00101.ITMCLSCD as FAMILYCLASS,
                sop10100.DOCDATE

from sop10200
left join iv00101 on sop10200.ITEMNMBR = iv00101.ITEMNMBR
left join sop10100 on sop10200.SOPNUMBE = sop10100.SOPNUMBE

WHERE SOP10100.DOCDATE BETWEEN '2018-01-01 00:00:00.000' AND '2035-01-01 00:00:00.000' 
union all

select  CASE SOP30300.SOPTYPE
                WHEN 1 THEN 'QUOTE'
                WHEN 2 THEN 'ORDER'
                WHEN 3 THEN 'INVOICE'
                WHEN 4 THEN 'RETURN'
                WHEN 5 THEN 'BACK ORDER'
                WHEN 5 THEN 'FULLFILLMENT ORDER'
                END AS SOPTYPE,
                sop30300.SLPRSNID,
                sop30300.XTNDPRCE as ExtendedPrice,
                sop30300.SOPNUMBE,
                iv00101.ITMCLSCD as FAMILYCLASS,
                sop30200.DOCDATE

from sop30300
left join iv00101 on sop30300.ITEMNMBR = iv00101.ITEMNMBR
left join sop30200 on sop30300.SOPNUMBE = sop30200.SOPNUMBE

WHERE SOP30200.DOCDATE BETWEEN '2018-01-01 00:00:00.000' AND '2035-01-01 00:00:00.000'

ORDER BY SOPNUMBE desc

标签: sqlsql-serverreporting-servicesreport

解决方案


如果我错了,请纠正我,但听起来你想要一种方法来查看报告是否有重复记录并在计算中使用它?

您可以执行子查询来检索计数,如果该计数大于 1,则您有重复记录

编辑:

SELECT *, (IF 
    (SELECT Count(S1.SOPTYPE) FROM sop10200 S1 WHERE T1.BillID = S1.BillID ) > 1 THEN "Duplicate " ELSE "" END) AS DuplicateCheck
FROM sop10200 T1

上述解决方案将为您提供一个值,您可以在每个页面上使用该值来报告它是否具有重复的 BillID。


推荐阅读