Jump to content

Variable für not in definieren mit Komma separiert


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Guten Tag, folgende Query habe ich erstellt:
 

 

declare
@values varchar(1000)
 
set @values ='G01,AL'
 
select 
lb.artikel,
art.NAME,
sum(lb.menge) as menge,
sum(lbe.TOTALELEMVALUE) as Wert,
'mögliche Projekte' = [dbo].[udf_anp_Projekte_LBW_WE](lb.artikel,@values)
from lagerbelegung lb
left outer join artikel art on art.artikel = lb.artikel
left outer join LAGERBELEGUNGELEMENT lbe on lb.PREISGRUPPIERUNGID = lbe.PREISGRUPPIERUNGID
where lb.lager in (@values)
and art.artikelgruppe between '10000' and '99999'
group by 
lb.artikel,
art.NAME,
[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, @values)
order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel

 

Mein Problem: es erscheint kein Ergebnis, da scheinbar das Komma als Separatur in der "IN-Funktion" nicht erkannt wird. Wenn ich z. B. nur G01 in die Variable schreibe, funktioniert die Query.

Habe jetzt schon vieles ausprobiert, aber nichts funktioniert.

 

Hat jemand eine Idee, wie ich das lösen könnte bzw. wo das Problem liegt?

 

Vielen Dank für Eure Unterstützung.

 

Herzliche Grüße

Markus Baumeister

 

 

 

 

Link zu diesem Kommentar
vor 32 Minuten schrieb MDD:

aber ein 'G01,AL' womit du wahrscheinlich keine Treffer findest.

Hi MDD, vielen Dank für Deine Antwort. Wenn ich das so ändere, erhalte ich einen Syntaxfehler. In der IN-Syntax soll ja nachher stehen ('G01','AL') dann bekomme ich auch Ergebnisse. Ich würde nur gerne

das Ganze flexibler gestalten, da auch eine Funktion aufgerufen wird. Leider bekomme ich bei allen meinen Versuchen kein Ergebnis.

Wenn  ich z.B. die Variable so fülle '''G01''' + ',' +'''AL''' dann ist das Ergebnis 'G01'.'AL' in der Variable. Trotzdem werden keine Datensätze gefunden.
 

Link zu diesem Kommentar
declare
@values varchar(1000)
declare @sql varchar(max)
 
 set @values =replace('G01,AL', ',', CHAR(39) + ',' + CHAR(39))
 
set @sql = '
select 
lb.artikel,
art.NAME,
sum(lb.menge) as menge,
sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 
'mögliche Projekte' + char(39) +  '[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) +  @values + char(39) +  ')
from lagerbelegung lb
left outer join artikel art on art.artikel = lb.artikel
left outer join LAGERBELEGUNGELEMENT lbe on lb.PREISGRUPPIERUNGID = lbe.PREISGRUPPIERUNGID
where lb.lager in (' + char(39) + @values + char(39) +  ')
and art.artikelgruppe between ' + char(39) + '10000'  + char(39) + ' and '+ char(39) + '99999'  + char(39) + 
' group by 
lb.artikel,
art.NAME,
[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, @values)
order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel'

exce (@sql)

 

versuch das mal,

bearbeitet von MDD
replace ergänzt, ein Values übersehen
Link zu diesem Kommentar

Sorry MDD, aber ich habe noch den gleichen Fehler

 

declare
@values varchar(1000)
declare @sql varchar(max)
 
 set @values =replace('G01,AL', ',', CHAR(39) + ',' + CHAR(39))
 
set @sql = '
select 
lb.artikel,
art.NAME,
sum(lb.menge) as menge,
sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 
'mögliche Projekte' + char(39) +  '[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) +  @values + char(39) +  ')
from lagerbelegung lb
left outer join artikel art on art.artikel = lb.artikel
left outer join LAGERBELEGUNGELEMENT lbe on lb.PREISGRUPPIERUNGID = lbe.PREISGRUPPIERUNGID
where lb.lager in (' + char(39) + @values + char(39) +  ')
and art.artikelgruppe between ' + char(39) + '10000'  + char(39) + ' and '+ char(39) + '99999'  + char(39) + 
' group by 
lb.artikel,
art.NAME,
[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, @values)
order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel'

exec (@sql)

Link zu diesem Kommentar

Du kannst unten satt exec @sql das exec durch ein Print ersetzen und das Statement mal selbst anschauen.

 

Falls es beim Fehler eine andere Zeile angezeigt hat liegt es wahrscheinlich am Group by, dort steht das nochmal ein @values das ich übersehen habe und du scheinbar auch.

 

declare @values varchar(1000)
declare @sql varchar(max)
 
 set @values =replace('G01,AL', ',', CHAR(39) + ',' + CHAR(39))
 
set @sql = '
select 
lb.artikel,
art.NAME,
sum(lb.menge) as menge,
sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 
'mögliche Projekte =' + char(39) +  '[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) +  @values + char(39) + ')
from lagerbelegung lb
left outer join artikel art on art.artikel = lb.artikel
left outer join LAGERBELEGUNGELEMENT lbe on lb.PREISGRUPPIERUNGID = lbe.PREISGRUPPIERUNGID
where lb.lager in (' + char(39) + @values + char(39) +  ')
and art.artikelgruppe between ' + char(39) + '10000'  + char(39) + ' and '+ char(39) + '99999'  + char(39) + 
' group by 
lb.artikel,
art.NAME,
[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) +  @values + char(39) + ')
order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel'

exec (@sql)

 

bearbeitet von MDD
= übersehen
Link zu diesem Kommentar

Hallo MDD,

 

vielen Dank nochmal. Habe das Script mit print laufen lassen, dass sieht eigentlich gut aus. Aber ich habe irgendwie ein Brett vor dem Kopf. Beim Exec erscheint der Fehler immer noch. Es muss m. E. dieser 

Teil sein:

 

sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 
'mögliche Projekte =' + char(39) +  '[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) +  @values + char(39) + ')
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...