2017-07-03 67 views
0

在我的公司,我們最近從SSRS到基於Cognos的報表系統的感動,我沒有與Cognos很多經驗作爲一個整體,正在到一些問題,似乎很容易修復,但我目前在掙扎。返回日期1和date2的最大在Cognos 10.2

在我們的數據庫,我們隔離2種接觸最新的信息[日期通過電子郵件發送]和[調用日期],我試圖結合兩種拿到[聯繫了日期]字段中返回。

有我在Cognos報告生成辦法找到這兩個數據項的最多?
我會期望某種類似下面的「c = MAX(a,b)」函數可用,但從我所看到的,顯然不是。

[日期聯繫了] = MAX([通過電子郵件發送日期],[名爲date])

而且,我們也沒有訪問和修改SQL或除報表生成器的任何COGNOS相關的部分,這使得該所有更有趣。

我覺得答案將建立一個CASE語句來做到這一點,但如果我可以,我寧願遠離CASE了。

感謝,
藍光

+0

我不相信你可以做到這一點沒有任何IF的CASE語句... THEN結構使用Cognos功能。但是,您可以嘗試數據源特定功能。當Cognos看到適當的數據源特定功能時,會將它們傳遞到它們在數據源上執行的位置。不知道你的數據源,我不能給出更具體的建議。 – Johnsonium

+0

謝謝你,只是確認我的期望。 我對case/IF..THEN語句不利的唯一原因是在查詢的其他部分正在運行時拖動運行速度。 看起來沒有辦法繞過它! – BluTak

+0

根據我的經驗,選擇一列或另一列的簡單CASE語句不會顯着降低報告速度。大部分處理時間是從數據源獲取原始數據。 CASE解決方案發生在所有這些完成之後。如果您想確定,可以安裝我的Cognos性能度量腳本,該腳本提供關於報告運行時間的反饋,每次運行時都會提供反饋。以下是鏈接:http:// cogblogger。COM/2015/11 /自動-Cognos的報告性能測量/。請注意更改前後的時間以查看影響。 – Johnsonium

回答

0

我不知道是否可以使用_days_between,以確定哪些是較新的日期。 像這樣:

案例 (_days_between(X,Y)> 0)

然後(X)

//或Y;如果第一個參數大於第二個參數,我不記得返回的值是負值還是負值。表達式編輯器的幫助會說。無論如何,這只是爲了讓你指向一個方向,而不是從西奈山下來。

情況

(_days_between(X,Y)> 0)

然後

(X)//或Y;

品(x或y,但不要緊,因爲沒有差別)

+0

他表示他不想使用CASE聲明。如果CASE語句沒有脫離表格,那麼你可以簡單地使用'CASE當X> = Y THEN X ELSE Y END'。沒有必要計算兩者之間的時間, – Johnsonium