我目前有一个 View (具有大型且复杂的联接结构),可以将大量数据提取到报告 SSRS 中。现在,对于某些报告,流经报告的每条记录都有一个重复行,使其无用。我注意到它对某些报告执行此操作,而不是所有报告,这确实让我感到困惑,因为如果基本查询中存在错误,它们都应该有重复的错误。无论如何,我试图在基本 View 中查找原因,但无法'想不出任何办法。
我确实注意到一件事,结果集的每一行中唯一唯一的是名为“Position_Number”的列。因此,在数据集属性中,我认为在列上放置 DISTINCT 很容易,但结果发现这是不可能的。我尝试了很多查询,但似乎都不起作用。
行号似乎不起作用,因为数据集属性不支持它
row_number() over (partition by field1 order by field2)
GROUP BY 不起作用
我尝试了来自各地的一系列与此类似的查询:
SELECT * FROM
vw_InvoiceOilPhyInspectionFees AS G1
JOIN (SELECT findetail_position, max(vw_invoice_invoicedate) as mostrecent
FROM view_Fees group by findetail_position) AS G2
ON G2. findetail_position = G1. findetail_position and g2.mostrecent = g1.vw_invoice_invoicedate
ORDER BY G1. findetail_position
TL:DR:我真正想问的是......从 SSRS 报告的结尾来看,基本上在结果集列之一上有 SELECT DISTINCT 吗?我觉得我处于一个奇怪的中间状态,没有任何解决方案有效......
最佳答案
当您获得重复行时,可以通过执行 DISTINCT 或使用 GROUP BY 来抑制它们。就您而言,GROUP BY 是正确的选择。技术:GROUP BY 重复的列,并对看起来唯一并导致重复行的列使用 Max() (或等效)。
例如,对于这样的数据:
First Last City Zone
----- ------ ---------- ----
Joe, Smith, Cleveland, 1
Bill,Johnson, Atlanta, 6
Mike, Truax, St.Louis, 1 <-- is this the dupe?
Mike, Truax, St.Louis, 2 <-- or is it this one?
Eric, Jones, Brussels, 4
使用如下查询:
SELECT First, Last, City, Max(Zone) AS Zone
FROM thatTable
GROUP BY First, Last, City
产生相同的结果,没有重复的行
First Last City Zone
----- ------ ---------- ----
Joe, Smith, Cleveland, 1
Bill,Johnson, Atlanta, 6
Mike, Truax, St.Louis, 2 <-- after applying a Max() aggregate
Eric, Jones, Brussels, 4
当然,很明显我有点过于简化了。具体来说,我不希望您有这样的印象:任何任意列上的 Max() 总是会给您带来您想要的结果。不,先生!这只是抑制重复行的唯一列的一种方法。在某些情况下,这样做可能是完全错误的。
因此,请与您的用户核实并确认最大或最小(或省略一列等)是正确的做法。如果没有,那么当它“正常工作”时,找出他们期望看到的内容。然后应用适当的聚合。
关于mysql - SSRS 在数据集中的单个列上选择不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536801/