mbaumeister 0 Geschrieben 14. Juni 2021 Melden 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
MDD 13 Geschrieben 14. Juni 2021 Melden Geschrieben 14. Juni 2021 Strings stehen unter Hochkomma. also 'G01','AL' Dein Statement überliefert aber ein 'G01,AL' womit du wahrscheinlich keine Treffer findest.
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden 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.
winmadness 79 Geschrieben 14. Juni 2021 Melden Geschrieben 14. Juni 2021 @mbaumeister Schau Dir mal diese Lösungen an.
MDD 13 Geschrieben 14. Juni 2021 Melden 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
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden 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 '.'.
MDD 13 Geschrieben 14. Juni 2021 Melden Geschrieben 14. Juni 2021 Ups habe ein Values übersehen - habe es oben korrigiert - versuchs nochmal
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden 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)
MDD 13 Geschrieben 14. Juni 2021 Melden 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
mbaumeister 0 Geschrieben 14. Juni 2021 Autor Melden 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) + ')
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden