mbaumeister 0 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 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 Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 Strings stehen unter Hochkomma. also 'G01','AL' Dein Statement überliefert aber ein 'G01,AL' womit du wahrscheinlich keine Treffer findest. Zitieren Link zu diesem Kommentar
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden Teilen Geschrieben 14. Juni 2021 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. Zitieren Link zu diesem Kommentar
winmadness 79 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 @mbaumeister Schau Dir mal diese Lösungen an. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 (bearbeitet) 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 14. Juni 2021 von MDD replace ergänzt, ein Values übersehen Zitieren Link zu diesem Kommentar
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden Teilen Geschrieben 14. Juni 2021 Vielen Dank, habe ich getestet. Bei mir kommt dann aber die Meldung: Meldung 102, Ebene 15, Status 1, Zeile 6 Falsche Syntax in der Nähe von '.'. Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 Ups habe ein Values übersehen - habe es oben korrigiert - versuchs nochmal Zitieren Link zu diesem Kommentar
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden Teilen Geschrieben 14. Juni 2021 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) Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 14. Juni 2021 Melden Teilen Geschrieben 14. Juni 2021 (bearbeitet) 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 14. Juni 2021 von MDD = übersehen Zitieren Link zu diesem Kommentar
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden Teilen Geschrieben 14. Juni 2021 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) + ') Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.