Neu Eigene Felder / Attribute spaltenweise exportieren

Felix-lg

Aktives Mitglied
22. November 2022
76
18
Hallo Zusammen,
ich versuche eine SQL Abfrage zu erstellen mit der ich am Ende bestimmte Eigene Felder in Form von Spalten ausgeben kann (als Bestandteil eines eigenen Exports mit weiteren Spalten).
Komme damit aber leider gar nicht weiter.

Folgende SQL gibt alle Attribute als Spalten aus (so wie auch der übliche Export):

SQL:
SELECT
cArtNr AS 'Artikelnummer',
vStdA.cName AS 'Artikelname',

tAttributSprache.cName AS 'Name',
CASE
    WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(VARCHAR, tArtikelAttributSprache.nWertInt)
    WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(VARCHAR, tArtikelAttributSprache.fWertDecimal)
    WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
    WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(VARCHAR, tArtikelAttributSprache.dWertDateTime, 104)
END AS 'Wert'

FROM vStandardArtikel vStdA
JOIN tArtikelAttribut on tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tAttributSprache on tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut= tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp

WHERE tArtikelAttributSprache.kSprache = 0
AND cArtNr LIKE 'PT%'

Folgende SQL gibt nur ein bestimmtes Attribut aus (siehe: https://forum.jtl-software.de/threads/sql-fuer-export-eines-eigenen-feldes.211059/):

SQL:
DECLARE @EigenesFeldName VarChar(128)

-- ###### Hier den Namen des Eigenen Feldes Eintragen ######
SET @EigenesFeldName = 'Dein Feld Name'
-- #########################################################

SELECT
cArtNr AS 'Artikelnummer',
vStdA.cName AS 'Artikelname',
@EigenesFeldName AS 'Name',
CASE
    WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(VARCHAR, tArtikelAttributSprache.nWertInt)
    WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(VARCHAR, tArtikelAttributSprache.fWertDecimal)
    WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
    WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(VARCHAR, tArtikelAttributSprache.dWertDateTime, 104)
END AS 'Wert',
tFeldTyp.cName AS 'Datentyp (sonst autom. ermitteln)'
FROM vStandardArtikel vStdA
JOIN tArtikelAttribut on tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut= tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
WHERE tArtikelAttributSprache.kSprache = 0
AND tArtikelAttribut.kAttribut=(SELECT TOP(1) kAttribut FROM tAttributSprache WHERE kSprache = 0 AND cName = @EigenesFeldName)


Was ich nun möchte ist im Grunde, eine Asuwahl von mehreren Eigenen Felder in mehreren Spalten.
Ich habe es schon ein wenig mit dem PIVOT Befehl versucht, habe aber keine Ahnung wie es gehen könnte. Dafür sind meine SQL Kenntnisse einfach viel zu gering...

Wenn jemand helfen kann oder Hinweise hat, wäre ich dankbar.

Gruß
Felix
 

frankell

Sehr aktives Mitglied
9. September 2019
2.303
695
Flensburg
Deinen Code habe ich so belassen und als CTE gesetzt:

SQL:
DECLARE @EigenesFeldName1 NVARCHAR(16) = (SELECT 'EigenesFeldName1');
DECLARE @EigenesFeldName2 NVARCHAR(22) = (SELECT 'EigenesFeldName2');
DECLARE @EigenesFeldName3 NVARCHAR(12) = (SELECT 'EigenesFeldName3');

-- CTE erstellen
WITH CTE (Artikelnummer, Artikelname, Attributname, Attributwert, Attributdatentyp) AS (
SELECT
    vStdA.cArtNr AS [Artikelnummer],
    vStdA.cName AS [Artikelname],
    tAttributSprache.cName AS [Attributname],
    CASE
        WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(nvarchar, tArtikelAttributSprache.nWertInt)
        WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(nvarchar, tArtikelAttributSprache.fWertDecimal)
        WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
        WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(nvarchar, tArtikelAttributSprache.dWertDateTime, 104)
    END AS [Attributwert],
    tFeldTyp.cName AS [Attributdatentyp]
FROM vStandardArtikel AS vStdA
JOIN tArtikelAttribut ON tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tAttributSprache ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
WHERE tArtikelAttributSprache.kSprache = 0
AND vStdA.cArtNr LIKE 'PT%'
)
-- Abfrage aus der CTE über View
SELECT
    vStdA.cArtNr,
    @EigenesFeldName1 AS [Attributname1],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName1) AS [Wert1],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName1) AS [Datentyp1],
    @EigenesFeldName2 AS [Attributname2],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName2) AS [Wert2],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName2) AS [Datentyp2],
    @EigenesFeldName3 AS [Attributname3],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName3) AS [Wert3],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName3) AS [Datentyp3]
FROM vStandardArtikel AS vStdA
WHERE vStdA.cArtNr LIKE 'PT%';

Solange keine Eigenen Felder identische Namen haben und tatsächlich auch immer tArtikelAttributSprache.kSprache = 0 ist, sollte das so funktionieren. Ich hoffe, ich habe die Tabellennamen überall richtig von Dir übernommen.
 
  • Gefällt mir
Reaktionen: Felix-lg

Felix-lg

Aktives Mitglied
22. November 2022
76
18
Moin! Vielen Dank für deine Mühe! Dein Code funktioniert so auf Anhieb einwandfrei :thumbsup:
Eine richtig gute Option um von der zeilenweisen Ausgabe wegzukommen!

@John Dein Tool kannte ich schon, ist auch sehr hilfreich! 😉
 
Zuletzt bearbeitet:

frankell

Sehr aktives Mitglied
9. September 2019
2.303
695
Flensburg
Moin! Vielen Dank für deine Mühe! Dein Code funktioniert so auf Anhieb einwandfrei :thumbsup:
Eine richtig gute Option um von der zeilenweisen Ausgabe wegzukommen!

Dein Tool kannte ich schon, ist auch sehr hilfreich! 😉
Du hast Dir ja offensichtlich mit vStandardArtikel bereits eine eigene View gebastelt. Selbiges habe ich auch gemacht, weil ich immer wieder auf bestimmte Daten zurückgreifen muss, die ich sonst nur mit diversen JOINs abfragen kann. Was bei Dir grad die Eigenen Felder sind, sind bei uns die Attribute und Merkmale. Die habe ich allesamt in eine View inkludiert, so dass ich nur noch diese View abfragen muss, die grundsätzlich auf tArtikel basiert und damit auch nur einen Record pro Artikel beinhaltet. Wird bei Deiner View wohl auch so sein (reine Vermutung).

Vielleicht ist es eine Idee auch für Dich, die Eigenen Felder zu integrieren. Das macht zwar die View etwas langsamer, aber mir hat das schon viel Zeit beim Coden erspart. :)
 

Felix-lg

Aktives Mitglied
22. November 2022
76
18
Moin!
Das mit dem View ist eine gute Idee, das werde ich im Hinterkopf behalten. Bin ich garnicht draufgekommen... Die vStandardArtikel habe ich mir nämlich nicht selbst gebaut. Die ist im Standard schon vorhanden. Das habe ich aus dem verlinkten Thread von @John!
Die StandardArtikel ist oft hilfreich...
Gruß
Felix
 
  • Gefällt mir
Reaktionen: frankell
Ähnliche Themen
Titel Forum Antworten Datum
Neu Ausgabe (drucken) Auftrag "eigene Felder" oder "Auftragspositionen.Bezeichnung" Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder des Artikels per Exportvorlage Auftrag auslesen Schnittstellen Import / Export 0
Vorlagen und eigene Felder JTL-Wawi 1.10 3
"Eigene Felder" in ebay Designvorlage JTL-Wawi 1.11 2
Eigene Felder im Block "Firmen- und E-Mail Einstellungen verwalten" JTL-Wawi 1.10 3
Neu Automatisch generierte Eigene Felder PAYPAL_FUNDING_SOURCE und AmazonPay-Referenz User helfen Usern - Fragen zu JTL-Wawi 0
eigene mehrere Bankverbindungen - Zugferd Datei anpassen? JTL-Wawi 1.11 2
Neu KI-WaWi-Workflows: Eigene KI-Endpunkte direkt aus JTL-Workflows ansprechen – ohne Plugin, flexibel und schnell Dienstleistung, Jobs und Ähnliches 3
Neu Eigene Bestellbestätigung User helfen Usern - Fragen zu JTL-Wawi 4
Neu Amazon Lister 2.0 Kategoriespezifische Felder fehlen bei vielen Kategorien Amazon-Lister - Fehler und Bugs 2
Neu Umstiegsproblem beim Lister - Kategorienspezifisch Felder alle einzelt einstellen? Amazon-Lister - Fehler und Bugs 4
Neu Übermittlung eigener Felder von FFN-Händlern an Fulfiller Arbeitsabläufe in JTL-Wawi 0
Neu SQL Code für GPSR Felder (Kaufland) zeigt Fehler + wird daher nicht übertragen kaufland.de - Anbindung (SCX) 0
Neu Shopify Kategorie /(Produkt Taxonomie) und kategoriespezifische Attribute in JTL Wawi pflegen Shopify-Connector 0
Neu HTML Attribute im Shopify richtig anzeigen Shopify-Connector 7

Ähnliche Themen