2017-07-03 1 views
0

In meiner Firma sind wir kürzlich von SSRS in ein Cognos-basiertes Reporting System gewechselt. Ich habe nicht viel Erfahrung mit Cognos als Ganzes und stoße auf einige Probleme scheint trivial leicht zu beheben, aber ich kämpfe so weit.Rückgabe des Maximums von Datum1 und Datum2 in Cognos 10.2

In unserer Datenbank trennen wir zwei Arten von Kontaktinformationen von [Date Emailed] und [Date Called], ich versuche beide zu kombinieren, um ein [Date Contacted] -Feld zu erhalten.

Gibt es eine Möglichkeit für mich in Cognos Report Builder, das Maximum dieser beiden Datenelemente zu finden?
Ich hätte erwartet, eine Art von "c = MAX (a, b)" -Funktion wie die unten, aber von dem, was ich gesehen habe, anscheinend nicht.

[Datum Kontaktiert] = MAX ([Datum Emailed], [Datum genannt])

Auch haben wir keinen Zugriff SQL oder jede Cognos bezogenen Teil mit Ausnahme des Berichts-Generator zu ändern, die das macht umso mehr Spaß.

Ich fühle mich wie die Antwort wird eine CASE-Anweisung erstellen, um dies zu tun, aber ich würde lieber weg von CASE bleiben, wenn ich kann.

Danke,
Blu

+0

Ich glaube nicht, Sie, ohne dass dies entweder eine CASE-Anweisung von IF zu tun ... THEN konstruieren Cognos-Funktionen. Sie können jedoch datenquellenspezifische Funktionen ausprobieren. Wenn Cognos geeignete datenquellenspezifische Funktionen erkennt, werden sie dort ausgeführt, wo sie in der Datenquelle ausgeführt werden. Da ich Ihre Datenquelle nicht kenne, kann ich keine spezifischeren Ratschläge geben. – Johnsonium

+0

Danke dafür, nur meine bisherigen Erwartungen bestätigend. Der einzige Grund dafür, dass ich case/IF..THEN-Anweisungen ablehne, ist, dass die Laufgeschwindigkeit nach unten gezogen wird, wenn andere Teile der Abfrage ausgeführt werden. Sieht so aus, als gäbe es keinen Weg! – BluTak

+0

Nach meiner Erfahrung wird eine einfache CASE-Anweisung, die eine Spalte oder eine andere auswählt, einen Bericht nicht wesentlich verlangsamen. Der Hauptteil der Verarbeitungszeit besteht darin, die Rohdaten von der Datenquelle zu akquirieren. Die CASE-Lösung passiert, nachdem alles abgeschlossen ist. Wenn Sie sicher sein möchten, können Sie mein Cognos-Leistungsmessskript installieren, das bei jeder Ausführung Feedback zur Laufzeit Ihres Berichts liefert. Hier der Link: http: // cogblogger.com/2015/11/automatisierter-cognos-bericht-leistungsmessung /. Notieren Sie sich die Zeit vor und nach der Änderung, um die Auswirkung zu sehen. – Johnsonium

Antwort

0

Ich frage mich, ob Sie _days_between zu bestimmen, welche die neueren Datums nutzen könnten. Etwas wie folgt aus:

Fall (_days_between (X, Y)> 0)

dann (x)

// oder Y; Ich kann mich nicht erinnern, ob der zurückgegebene Wert negativ oder positiv ist, wenn der erste Parameter größer als der zweite ist. Die Hilfe des Ausdruckseditors wird sagen. Wie auch immer, das ist nur, um dich in eine Richtung zu weisen, anstatt dass ich vom Berg Sinai herunter komme.

Fall

(_days_between (X, Y)> 0)

dann

(x) // oder Y;

Else (x oder y, aber es spielt keine Rolle, da gibt es keinen Unterschied)

+0

Er gab an, dass er keine CASE-Anweisung verwenden wollte. Wenn CASE-Anweisungen nicht von der Tabelle entfernt sind, können Sie einfach 'CASE WHEN X> = Y DANN X ELSE Y END' verwenden. Es würde nicht nötig sein, die Tage zwischen – Johnsonium

Verwandte Themen