2016-07-04 5 views
1

Ich habe einen Bericht, der drei Parameter verwendet:SSRS: Verwenden Sie nicht wie in Parameter Ausdruck

  • @startDate
  • @endDate
  • @Brand

Die @startDate und @endDate Parameter funktionieren wie erwartet. @Brand wird als Drop-Down-Menü mit zwei Optionen angezeigt: B und P

Wenn der Benutzer B die Ergebnisse den Filter entsprechen zurückgegeben werden, müssen: LIKE ”%.%” Wenn der Benutzer P müssen die Ergebnisse zurückgegeben wählt die Filter entsprechen: NOT LIKE “%.%”

ich bin nicht sicher, wie diese Filter arbeiten

+0

so wollen Sie eine mehr Wildcard-Suche erreichen? – Aldrin

+0

Hi Aldrin, ja die Datensätze, die "B" entsprechen, bestehen aus Zeichen, die durch einen Punkt getrennt sind. Z.B. '1000045.swilde' und die Datensätze, die 'P' entsprechen, haben keinen Punkt. Z.B. '2056789' Wenn der Benutzer 'B' auswählt, muss der Bericht jeden Datensatz mit einem Punkt zurückgeben. – curiouser

+0

Ahh ich sehe, BI-Entwickler bereits beantwortet, was ich empfehlen werde. Versuchen Sie seine Antwort – Aldrin

Antwort

1

Die einfachste (und am wenigsten elegant) Option nur eine IF-Anweisung in der SQL für P. zu machen haben, ist:

IF @Brand 'B' THEN 
    SELECT * FROM Table WHERE Filter LIKE '%.%' 
ELSE 
    SELECT * FROM Table WHERE Filter NOT LIKE '%.%' 
+0

Hallo BIDeveloper, krank geben Sie einen Versuch und sehen, was ich am Ende habe. – curiouser

+0

Ich endete mit einer CASE-Anweisung in der WHERE-Klausel der Hauptabfrage, und es funktioniert wie erwartet. – curiouser

2

Ich suchte nach einer Antwort für dieses genaue Problem und konnte nicht finden. Ich poste hier aber, weil ich herausgefunden habe, wie es geht. Btw * ist Platzhalter in SSRS

Ihren Ausdruck für eine normale LIKE-Anweisung

=iif(variable LIKE "*.*", True, False) 

Ihres NOT LIKE Ausdruck

=iif(NOT(variable LIKE "*.*"), False, True))