Jump to content

Variable für not in definieren mit Komma separiert


Recommended Posts

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 to post
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 to post
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,

Edited by MDD
replace ergänzt, ein Values übersehen
Link to post

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 to post

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)

 

Edited by MDD
= übersehen
Link to post

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 to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...