Report Filter - min()

19. November 2009 10:24

Hallo zusammen,

ich habe einen Report welcher mir über die CRM Filter Kundenname, Angebotnummer und Datum anzeigt.
Siehe Code:

Code:
SELECT newOffer0.[New_parentaccountidName]
      ,newOffer0.[New_angebotnummer]
      ,newOffer0.[New_datum]
  FROM (' + @CRM_FilteredNew_Offer + ') as newOffer0


Das funktioniert auch bestens. Nun muss ich aber auch die Funktion min(newOffer0.[New_datum]) zugreifen, aber diese Möglichkeit gibt es im CRM Filter nicht.
Wie muss ich das dann machen? Mit normalem SQL Code würde ich es ja so machen:

Code:
SELECT New_parentaccountidName
      ,New_angebotnummer
      ,New_datum
  FROM newOffer
WHERE min(New_datum) between '2009-10-10' and '2009-10-31'


Danke
Gruß
tw-elektric

Re: Report Filter - min()

19. November 2009 11:25

Hallo tw-electric,

ohne es jetzt getestet zu haben würde ich sagen so:
Code:
SELECT newOffer0.[New_parentaccountidName]
      ,newOffer0.[New_angebotnummer]
      ,newOffer0.[New_datum]
  FROM (' + @CRM_FilteredNew_Offer + ') as newOffer0
WHERE min(newOffer0.New_datum) between '2009-10-10' and '2009-10-31'

Re: Report Filter - min()

19. November 2009 11:34

Hallo Michael,

die WEHRE Abfrage mit min() sollte sich aber auf den Filter beziehen.
Der Zeitraum legt ja der User in den CRM Filtern (' + @CRM_FilteredNew_Offer + ') fest. Und genau dies soll dann ünernommen werden.

Ich hoffe du verstehst wie ich das meine.

Re: Report Filter - min()

19. November 2009 14:18

ja,

ich glaube, ich habe das verstanden.

Re: Report Filter - min()

19. November 2009 14:27

Daher kann es mit diesem Code nicht gehen:

Code:
SELECT newOffer0.[New_parentaccountidName]
      ,newOffer0.[New_angebotnummer]
      ,newOffer0.[New_datum]
  FROM (' + @CRM_FilteredNew_Offer + ') as newOffer0
WHERE min(newOffer0.New_datum) between '2009-10-10' and '2009-10-31'


Hier ist ja das Datum Fix im Report hinterlegt. Wenn nun der User den Bericht im CRM ausführt, und als Filter z.B. alle Angebote im Monat Januar auswählt, dann bleibt ja im Report fix immer noch die Zeile:

WHERE min(newOffer0.New_datum) between '2009-10-10' and '2009-10-31

Hier müsste ja jetzt '2009-01-01' and '2009-01-31' stehen...

Re: Report Filter - min()

19. November 2009 14:48

stimmt. das ist auch nicht so ganz einfach, das CRM das Filtern eines Filters nicht direkt unterstützt.

Sieh dir mal diesen Artikel an, der könnte weiterhelfen:
http://blogs.javista.com/2009/03/18/mic ... ring-tips/

Re: Report Filter - min()

19. November 2009 17:40

danke, denk link kenne ich.
aber irgendwie verstehe ich nicht was genau du damit meinst.
ich finde hier keinen anhaltspunkt, wie ich meine abfrage machen könnte...

trotzdem danke.

gruß
tw-elektric

Re: Report Filter - min()

20. November 2009 10:02

Hallo Michael,

kannst du mir noch bitte sagen, welcher Abschnitt du genau meinst?
Ich finde hier noch die Sache mit Union. aber das brauche ich ja nicht für meine Abfrage.
Ich frage ja eig. nur eine einzige Tabelle ab.

Danke

Gruß
tw-elektric

Re: Report Filter - min()

22. November 2009 20:12

Hallo tw-electric,

ich habe mir deine Anforderung jetzt noch einmal in Ruhe angesehen. Ganz so einfach wird das leider nicht, da ja in deinem gefilterten Feld nicht der tatsächlich benötigte Wert steht, sondern ein Tag, du aber den Monat auswerten möchtest, richtig?

In diesem Fall musst du dir im Report noch eine Funktion hinterlegen, die den ersten und letzten Tag des Monats aus dem übergebenene Feld des Filters ermittelt.

Re: Report Filter - min()

25. November 2009 19:49

Hallo Michael,

Naja, nicht ganz.
In meinem Filtertext habe ich im Prinzip einen Zeitraum, z.B. den Monat Oktober.
Zeige mir alle Aufträge, wo das Auftragsdatum im Monat Oktober 2009 liegt.

Nun habe ich alle Datensätze in diesem Momat gefiltert. Und nun müsste ich mit
WHERE min(datum) im Oktober
nochmals per SQL die Datensätze auswertern.

Sprich, ich müsste in einen Funktion überprüfen, was im FIlterText com CRM gefiltertet wurde, und muss mir dann dem entsprechend das WHERE min() bauen.

Aber ich habe keine Ahnung wie ich das machen könnte.

Danke für deine Hilfe...

Grüße
tw-elektric

Re: Report Filter - min()

25. November 2009 19:58

Hallo tw-electric,

mir ist gerade folgende Idee gekommen. Was hälst du davon den Code in der ersten Zeile durch den Code der 2. Zeile zu ersetzen?
Du benötigst dabei nur ein DAtumsfeld, das in dem von dir gewünschten Zeitraum liegt.
Code:
WHERE min(newOffer0.New_datum) between '2009-10-10' and '2009-10-31'
WHERE min(month(newOffer0.New_datum)) = month(datumsfeld)

Re: Report Filter - min()

25. November 2009 21:37

Mhhh, auf das Erste dachte ich mir, dass es so gehen könnte. Aber eben kam mir, dass in der gefilterten Tabelle ja schon alle Datensätze stehen, welche z.B. als Angebotsdatum "Oktober" haben.

Und wenn ich jetzt min(date) auf die gefilterte Tabelle anwende, so bekomme ich ja die gleichen Datensätze zurück, da es ja nur Datensätze gibt, die ein Datum im Oktober haben!

Ich muss ja min(date) auf die kompletten Angebotsdatensätze anwenden, dass ich ein plausibles Resultat bekomme.

Ist echt sehr knifflig, diese Abfrage :(

Re: Report Filter - min()

27. November 2009 09:44

Hallo tw-electric,

mal eine dumme Frage, was möchtest du eigentlich mit dem Min erreichen, bzw. mit dem ganzen Report?

Irgend wie ist mir im Moment nicht klar, wofür du das überhaupt benötigst.

Re: Report Filter - min()

27. November 2009 11:26

Hallo Michael,

wie haben einen Kundenstamm mit einem Erfassungsdatum des Kunden. Leider sind bei uns Kunden, Interessenten und Werbefirmen gleichgesetzt. Sprich, wenn ein Kundendatensatz angelegt wurde, heißt das nicht, dass dieser Kunde überhaupt ein Angebot, Auftrag etc. erhalten hat.

Sprich, anhand dem Erfassungsdatum des Kunden kann ich nicht herausfinden, welche Neukunden wir z.B. im Oktober 2009 haben. Es kann sein, dass ein Kunde im Jahre 2000 angelegt wurde, aber erst jetzt im Oktober 2009 zum ersten Mal ein Angebot erhalten hat.

Um nun wirkliche Neukunden welche zum ersten Mal ein Angebot oder ein Auftrag erhalten haben herauszufinden, muss ich mit dem min() suchen, welcher Kunde das mindest Bestelldatum oder Anfragedatum im Oktober 2009 hat. Somit weiß ich, dass es ein Neukunde ist, egal wann er angelegt wurde.

Das reine SQL Statement ist ja eine ganz einfach Sache:
Code:
SELECT New_parentaccountidName
      ,New_angebotnummer
      ,New_datum
  FROM newOffer
WHERE min(New_datum) between '2009-10-10' and '2009-10-31'

Re: Report Filter - min()

30. November 2009 21:25

Hallo Michael,

hast du noch eine Idee?
Oder soll ich das Thema abstempeln und mich damit abfinden, dass ich diese Abfrage einfach nur persönlich über den SQL Manager machen kann? Somit muss ich mir eben immer die Arbeit machen, und für meinen Chef diese Abfrage direkt durchführen.

Danke

Gruß
tw-elektric

Re: Report Filter - min()

30. November 2009 22:28

Hallo,

ich habe im Moment sehr viel zu tun, so das ich einfach keine Zeit finde, da weiterzumachen. Ich habe mir aber die Fragestellung schon vorgemerkt, weil es mich selbst interessiert, wie man die Abfrage lösen kann. Irgend wann werde ich dir wahrscheinlich eine Lösung anbieten können, das wird aber nocht etwas dauern. Sorry.

Re: Report Filter - min()

30. November 2009 23:27

kein Problem, ich danke dir für deine bisherige Hilfe.

Grüße
tw-elektric