2010-12-21 82 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查詢,但它是一個查詢的野獸(按我的標準)。我在這裏包含的部分是它的一小部分。感謝所有的提示。