![]() |
![]() |
|
|
#1 |
![]() MOF Profi |
Hallo Zusammen,
ich weiß jetzt nicht genau ob ich hier an der richtigen Stelle mit meinen Thema gelandet bin und versuche es einfach mal. In einer Tabellenwertfunktion (auf MS SQL-Server 2008) frage ich anhand einer Parametereingabe einen bestimmten Status ab Code: where Jahr = @pJahr and Monat <= @pMonat and F.Mitglied = @pStatus) Leider schaffe ich es nicht, mir auch alle Werte ausgeben zu lassen (ohne bestimmter Auswahl), sprich in der Art von * o.ä. Kann mir jemand sagen ob es überhaupt möglich ist und wenn ja, wie? Vielen Dank schon mal für Eure Hilfe!! __________________ So longRalf ![]() >> Man muß viel gelernt haben, um das, was man nicht weiß, erfragen zu können << |
|
|
|
|
|
#2 |
![]() MOF Guru |
Was ist das Merkmal welchen Parameters, dass die Auswahl alle betreffen soll?
Ich könnte mir es so vorstellen, dass der Indikator dafür z.B. @pstatus = -1 sein könnte dann sähe das Kriterium z.B. so aus: Code: where @pstatus = -1 or Jahr = @pJahr and Monat <= @pMonat and F.Mitglied = @pStatus) __________________ Freundlichen GrußHans-Christian ----------------------------------------- Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren ----------------------------------------- Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx). |
|
|
|
|
|
#3 |
|
Threadstarter
![]() MOF Profi |
Hallo Hans-Christian,
ich weiß jetzt nicht, was Du unter Merkmal verstehst. Also die Einträge in der Tabellen, aus der gefiltert werden soll sind 0 = Nichtmitglieder 1 = Mitglieder 2 = Sonstige Es soll nach den einzelnen Einträgen gefiltert werden, sprich nach 0, 1 oder 2 und es soll auch die Möglichkeit bestehen, alle auszuwählen (0 + 1 + 2). Ist dies über diese Parametereingabe möglich? __________________ So longRalf ![]() >> Man muß viel gelernt haben, um das, was man nicht weiß, erfragen zu können << |
|
|
|
|
|
#4 |
![]() MOF Guru |
Der Parameter ist der Schlingel, der den Wert enthält, nach dem Du entscheidest, wie Du filterst. In Deinem Beispiel @pStatus.
Jetzt kannst Du Dich für einen Wert (=Merkmal) entscheiden, der für 'alle' steht. In meinem Codebeispiel wäre das -1. Ich dachte, das wäre anhand des Beispiels deutlich geworden ... Hast Du das denn mit meinem Code mal ausprobiert? __________________ Freundlichen GrußHans-Christian ----------------------------------------- Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren ----------------------------------------- Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx). |
|
|
|
|
|
#5 |
|
Threadstarter
![]() MOF Profi |
Habe Deinen Code getestet, aber es werden keine Daten zurückgegeben.
Der Code sieht jetzt folgendermaßen aus: Code: begin with LM as ( select Jahr, Monat, F.[Mitglied] as [Status], cast(sum(coalesce(Zellstoff, 0)) as int) as [Zellstoff (Monat)], cast(sum(coalesce(Holzschliff, 0)) as int) as [Holzschliff (Monat)], cast(sum(coalesce(Papier_und_Pappe, 0)) as int) as [Papier und Pappe (Monat)], sum([Zellstoff] + [Holzschliff] + [Altpapierstoff]) as [Rohstoff insgesamt (Monat)], cast(sum(coalesce(Altpapierstoff, 0)) as int) as [APStoff (Monat)], sum([Zellstoff] + [Holzschliff]+ [Altpapierstoff] + [Papier_und_Pappe]) as [Umsatz insgesamt (Monat)] from vdpproduktion.dbo.Umsaetze U join vdpproduktion.dbo.Firma F on F.Zentrale = U.Zentrale and F.Werk = U.Werk and F.Mitglied = @pStatus --where Jahr = @pJahr and Monat <= @pMonat --and (@pStatus is null or F.Mitglied = @pStatus) where @pstatus = -1 or Jahr = @pJahr and Monat <= @pMonat and (F.Mitglied = @pStatus) group by Jahr, Monat, F.Mitglied, U.Zentrale, U.Werk ) __________________ So longRalf ![]() >> Man muß viel gelernt haben, um das, was man nicht weiß, erfragen zu können << |
|
|
|
|
|
#6 |
![]() MOF Guru |
Zitat: von Ralf Ich bin ganz ehrlich und verstehe das mit -1 auch nicht ganz!! Was soll dieses -1 bewirken? Wenn Du freilich den Parameter @pStatus auch noch in der JOIN Bedingung verwendest, das ist eventuell doppelt gemoppelt und kann an der einen oder anderen Stelle wegfalle, aber dann kann das so einfach nicht klappen, und das konnte ich ausgehend von #1 auch nicht ahnen (die Kristallkugel war nicht eingeschaltet). Da müsste das eben auch noch mit rein ... Code: join vdpproduktion.dbo.Firma F on F.Zentrale = U.Zentrale and F.Werk = U.Werk and (F.Mitglied = @pStatus or @pStatus = -1) __________________ Freundlichen GrußHans-Christian ----------------------------------------- Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren ----------------------------------------- Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx). Geändert von hcscherzer (02.08.2010 um 10:01 Uhr). |
|
|
|
|
|
#7 |
|
Threadstarter
![]() MOF Profi |
Vielen Dank für diese aufschlussreiche Erläuterung des Codes.
Ganz nebenbei, es funktioniert jetzt hervorragend. Kaum macht man's richtig, funktionierts!! Also nochmals vielen Dank für Deine Hilfe!! ![]() __________________ So longRalf ![]() >> Man muß viel gelernt haben, um das, was man nicht weiß, erfragen zu können << |
|
|
|