quattroformatee
Aktives Mitglied
Hallo,
wir haben unsere eigene View in der Datenbank angelegt, um so eine bessere Übersicht unserer Produkte auf unseren Lieferscheinen zu haben. Wir haben den SQL Code auch bereits mit einem Testauftrag direkt in der Datenbank getestet und er nimmt die Artikelnummern, checkt das hintere Kürzel und sortiert die einzelnen Bestellpositionen auch nach unseren Kriterien. Das Problem ist jetzt aber, dass wir unsere eigene View nicht auf den Lieferschein bekommen. Anscheinend kann man in der Datenquelle keine eigenen Views abfragen und über die Sortierung haben wir bereits die wildesten Versuche probiert, aber leider ohne Erfolg. Hat vielleicht jemand eine Idee wie wir unsere Sortierung auf den Lieferschein bekommen? Im Screenshot unsere SQL Query in der Sortierung. Die gibt auch die richtigen Schlüssel aus mit denen dann sortiert wird das haben wir auch bereits getestet. Anbei der SQL Code mit dem wir die View erstellt haben:
wir haben unsere eigene View in der Datenbank angelegt, um so eine bessere Übersicht unserer Produkte auf unseren Lieferscheinen zu haben. Wir haben den SQL Code auch bereits mit einem Testauftrag direkt in der Datenbank getestet und er nimmt die Artikelnummern, checkt das hintere Kürzel und sortiert die einzelnen Bestellpositionen auch nach unseren Kriterien. Das Problem ist jetzt aber, dass wir unsere eigene View nicht auf den Lieferschein bekommen. Anscheinend kann man in der Datenquelle keine eigenen Views abfragen und über die Sortierung haben wir bereits die wildesten Versuche probiert, aber leider ohne Erfolg. Hat vielleicht jemand eine Idee wie wir unsere Sortierung auf den Lieferschein bekommen? Im Screenshot unsere SQL Query in der Sortierung. Die gibt auch die richtigen Schlüssel aus mit denen dann sortiert wird das haben wir auch bereits getestet. Anbei der SQL Code mit dem wir die View erstellt haben:
SQL:
/*--------------------------------------------------------------
alte View weg
----------------------------------------------------------------*/
IF OBJECT_ID('dbo.v_LieferscheinSort','V') IS NOT NULL
DROP VIEW dbo.v_LieferscheinSort;
GO
/*--------------------------------------------------------------
neue View (für beliebig viele Positionen je Auftrag)
----------------------------------------------------------------*/
CREATE VIEW dbo.v_LieferscheinSort AS
/* 1) alle Artikel-Positionen */
WITH Pos AS (
SELECT p.kAuftrag, -- Auftrags-ID
p.kAuftragPosition, -- Positions-ID
p.cArtNr -- SKU
FROM Verkauf.tAuftragPosition p
WHERE p.nType = 1 -- 1 = Artikel
),
/* 2) SKU zerlegen */
Tokens AS (
SELECT p.kAuftrag,
p.kAuftragPosition,
p.cArtNr,
s.value,
ROW_NUMBER() OVER (PARTITION BY p.kAuftrag, p.kAuftragPosition
ORDER BY (SELECT 0)) AS idx,
COUNT(*) OVER (PARTITION BY p.kAuftrag, p.kAuftragPosition) AS cnt
FROM Pos p
CROSS APPLY STRING_SPLIT(
CASE WHEN p.cArtNr LIKE '%-P' -- „-P“ (Personalisierung) abtrennen
THEN LEFT(p.cArtNr, LEN(p.cArtNr)-2)
ELSE p.cArtNr END
, '-') s
),
/* 3) Produkt-, Farb-, Größencode herausziehen */
SkuParts AS (
SELECT kAuftrag,
kAuftragPosition,
cArtNr,
MAX(CASE WHEN idx = cnt-2 THEN value END) AS ProdCode,
MAX(CASE WHEN idx = cnt-1 THEN value END) AS ColorCode,
MAX(CASE WHEN idx = cnt THEN value END) AS SizeCode
FROM Tokens
GROUP BY kAuftrag, kAuftragPosition, cArtNr
)
/* 4) Sortfelder + zusammengesetzter Schlüssel */
SELECT
s.kAuftrag,
s.kAuftragPosition,
s.cArtNr,
SortPersonal = CASE WHEN s.cArtNr LIKE '%-P' THEN 0 ELSE 1 END,
SortProduct = CASE s.ProdCode
WHEN 'M' THEN 1 WHEN 'F' THEN 2 WHEN 'K' THEN 3
WHEN 'P' THEN 4 WHEN 'H' THEN 5 WHEN 'KP' THEN 6
WHEN 'BB' THEN 7 WHEN 'BL' THEN 8 ELSE 99 END,
SortColor = CASE s.ColorCode
WHEN 'S' THEN 1 WHEN 'NAV' THEN 2 WHEN 'BUR' THEN 3
WHEN 'B' THEN 4 WHEN 'R' THEN 5 WHEN 'GR' THEN 6
WHEN 'N' THEN 7 WHEN 'W' THEN 8 WHEN 'PK' THEN 9
WHEN 'HB' THEN 10 ELSE 99 END,
SortSize = CASE s.SizeCode
WHEN '0/3' THEN 1 WHEN '3/6' THEN 2
WHEN '6/12' THEN 3 WHEN '12/18' THEN 4
WHEN '18/24' THEN 5 WHEN 'E' THEN 6
WHEN 'S' THEN 7 WHEN 'M' THEN 8
WHEN 'L' THEN 9 WHEN 'XL' THEN 10
WHEN 'XXL' THEN 11 WHEN '3XL' THEN 12
WHEN '4XL' THEN 13 WHEN '5XL' THEN 14
WHEN '92' THEN 15 WHEN '98' THEN 16
WHEN '104' THEN 17 WHEN '110' THEN 18
WHEN '116' THEN 19 WHEN '122' THEN 20
WHEN '128' THEN 21 WHEN '134' THEN 22
WHEN '140' THEN 23 WHEN '146' THEN 24
WHEN '152' THEN 25 WHEN '158' THEN 26
WHEN '164' THEN 27 ELSE 99 END,
/* zusammengesetzter Sortierschlüssel */
SortKey =
(CASE WHEN s.cArtNr LIKE '%-P' THEN 0 ELSE 1 END) * 1000000 +
(CASE s.ProdCode
WHEN 'M' THEN 1 WHEN 'F' THEN 2 WHEN 'K' THEN 3
WHEN 'P' THEN 4 WHEN 'H' THEN 5 WHEN 'KP' THEN 6
WHEN 'BB' THEN 7 WHEN 'BL' THEN 8 ELSE 99 END) * 10000 +
(CASE s.ColorCode
WHEN 'S' THEN 1 WHEN 'NAV' THEN 2 WHEN 'BUR' THEN 3
WHEN 'B' THEN 4 WHEN 'R' THEN 5 WHEN 'GR' THEN 6
WHEN 'N' THEN 7 WHEN 'W' THEN 8 WHEN 'PK' THEN 9
WHEN 'HB' THEN 10 ELSE 99 END) * 100 +
(CASE s.SizeCode
WHEN '0/3' THEN 1 WHEN '3/6' THEN 2
WHEN '6/12' THEN 3 WHEN '12/18' THEN 4
WHEN '18/24' THEN 5 WHEN 'E' THEN 6
WHEN 'S' THEN 7 WHEN 'M' THEN 8
WHEN 'L' THEN 9 WHEN 'XL' THEN 10
WHEN 'XXL' THEN 11 WHEN '3XL' THEN 12
WHEN '4XL' THEN 13 WHEN '5XL' THEN 14
WHEN '92' THEN 15 WHEN '98' THEN 16
WHEN '104' THEN 17 WHEN '110' THEN 18
WHEN '116' THEN 19 WHEN '122' THEN 20
WHEN '128' THEN 21 WHEN '134' THEN 22
WHEN '140' THEN 23 WHEN '146' THEN 24
WHEN '152' THEN 25 WHEN '158' THEN 26
WHEN '164' THEN 27 ELSE 99 END)
FROM SkuParts s;
GO
/*--------------------------------------------------------------
Synonym im Report-Schema
----------------------------------------------------------------*/
IF OBJECT_ID(N'Report.v_LieferscheinSort','SN') IS NOT NULL
DROP SYNONYM Report.v_LieferscheinSort;
GO
CREATE SYNONYM Report.v_LieferscheinSort FOR dbo.v_LieferscheinSort;
GO
Anhänge
Zuletzt bearbeitet: