2010-12-21 50 views
0

挣扎水晶重复的行报告XI R2水晶报表 - 删除基于域

我想捕捉每个ID只有一行,基于最早的时间戳。

实施例:

ID时间

1 7时

1 9:00

2 11:00

2 11:30

将返回

ID时间

1 7:00

2 11:00

我试图抑制重复,但因为它是在寻找多个字段,将无法正常工作。我想知道是否可以将ID分组,然后按时排序,删除以后的条目?通过转到专家,选择细节,抑制,然后添加函数:{LOG.id} = Next({LOG.id});;我想我可能已经知道了这一点。

在我标记为已回答之前,很想听到其他任何意见。由于

+0

你不能在你的数据源中做到这一点吗?什么是您的数据源? – 2010-12-21 21:55:59

回答

1

如果你有机会到查询/存储过程使用返回的数据,你可以做你的分组那里,鼻翼:

SELECT ID, MIN(Time) as Time 
FROM Table GROUP BY ID 
1

根据数据,如果你在过滤器可能会取得更好的结果数据的来源,但不知道你在报告什么是不可能知道的。

如果您正在过滤报告中显示的内容,您可能只是通过网络拖动大量数据,以便在报告中禁用它。为什么不只是在源代码中进行过滤?

在SQL Server中,你可以通过时间ID做前N个功能是这样的(测试数据包括在内)

create table t3 (id int, supplierId int, description varchar(max), value decimal(5,2), created datetime default getdate()) 

insert into t3 values 
(1, 1, 'test', 180.0, '20101001'), 
(1, 1, 'test', 181.0, '20101003'), 
(1, 1, 'test', 182.0, '20101002'), 
(1, 2, 'test', 183.0, '20101005'), 
(1, 2, 'test', 184.0, '20101002'), 
(1, 2, 'test', 185.0, '20101001') 


;with cte as 
(select 
     t.id 
    , t.supplierId 
    , t.description 
    , t.value 
    , t.created 
    , rank() over (partition by t.supplierId order by t.created desc) as Position 
from t3 t) 
select * from cte where Position = 1 
0

我能组,然后进行排序。我试图添加一分钟到我的SQL查询,但它是一个查询的野兽(按我的标准)。我在这里包含的部分是它的一小部分。感谢所有的提示。