Этот запрос может показаться невероятно запутанным и длинным, поэтому заранее приносим свои извинения.
У меня есть несколько таблиц: ITEM , FINAL_SORT и "другая" таблица (в этом случае я буду использовать таблицу CARTON , но естьдругие таблицы, для которых требуется та же функция).
У нас есть элементы, в которых каждый отдельный SKU находится в формате [range-style-style]. [color]. [size] в одной строке / ”Item»(Например, AAA-TSHIRT-AA1.RED.S).Фактически в таблицах SKU будут в этом формате.«Диапазон» (т. Е. Самая первая часть кода, AAA) может иметь несколько типов продуктов с разными размерами (например, футболки XS-XL, брюки 28 ”-38” и т. Д.)
Если бы я былчтобы сделать SELECT * FROM CARTON для коробки 123, она вернет:
| ITEM | QTY| PARENT_CONTAINER |
|------------------------|----|------------------|
| A1A-TSHIRTS-AA1.RED.S | 2 | 123 |
| A1A-TSHIRTS-AA1.RED.M | 2 | 123 |
| A1A-TSHIRTS-AA1.RED.L | 2 | 123 |
| B2B-PANTS-CC3.BLUE.32 | 3 | 123 |
| B2B-PANTS-CC3.BLUE.34 | 3 | 123 |
| B2B-PANTS-CC3.BLUE.36 | 3 | 123 |
Таблица ITEM является списком основных элементов, поэтому она содержит ВСЕ комбинации цветов и размеров SKU (например, указанный продукт может иметь XS иXL в наличии, он просто не упакован в вышеуказанную коробку).Таблица FINAL_SORT имеет столбец «SIZE_FINAL_SORT», который используется для упорядочения по логическому размеру размеров (XS, S, M, L, XL и т. Д.), В противном случае это будет сделано в алфавитном порядке.
Здесьгде вещи выходят далеко за рамки моего уровня квалификации.Мне нужно повернуть вывод CARTON таким образом, чтобы вместо одной строки на SKU была одна отдельная строка на комбинацию стиля / цвета, а поворотные столбцы должны быть общими столбцами «SIZE1, SIZE2, SIZE3 ... SIZE10», которые представляютвозможные размеры для этого стиля продукта, который сортируется с использованием таблицы FINAL_SORT, для вывода, подобного приведенному ниже:
| ITEM | SIZE1 | SIZE2 | SIZE3 | SIZE4 | SIZE5 | SIZE6 | PARENT_CONTAINER |
((size represents) | XS/28 | S/30 | M/32 | L/34 | XL/36 | -/38 | )
|------------------------|--------|--------|--------|--------|--------|--------|------------------|
| A1A-TSHIRTS-AA1.RED |(ISNULL)| 2 | 2 | 2 |(ISNULL)|(ISNULL)| 123 |
| B2B-PANTS-CC3.BLUE |(ISNULL)|(ISNULL)| 3 | 3 |3 |(ISNULL)| 123 |
Это вообще возможно с текущими таблицами?Я мог бы создать новые таблицы, чтобы помочь с этим, но я не могу добавить столбцы к вышеупомянутым существующим таблицам.
CREATE TABLE testITEM
(
[ITEM] NVARCHAR(30) NULL,
[ITEM_SIZE] NVARCHAR(10) NULL,
[RANGE] NVARCHAR(3) NULL
)
INSERT INTO testITEM
values
('A1A-TSHIRTS-AA1.RED.XS','XS','A1A'),
('A1A-TSHIRTS-AA1.RED.S','S','A1A'),
('A1A-TSHIRTS-AA1.RED.M','M','A1A'),
('A1A-TSHIRTS-AA1.RED.L','L','A1A'),
('A1A-TSHIRTS-AA1.RED.XL','XL','A1A'),
('A1A-TSHIRTS-AA1.BLUE.XS','XS','A1A'),
('A1A-TSHIRTS-AA1.BLUE.S','S','A1A'),
('A1A-TSHIRTS-AA1.BLUE.M','M','A1A'),
('A1A-TSHIRTS-AA1.BLUE.L','L','A1A'),
('A1A-TSHIRTS-AA1.BLUE.XL','XL','A1A'),
('A1A-TSHIRTS-BB2.WHITE.S:M','S:M','A1A'),
('A1A-TSHIRTS-BB2.WHITE.L:XL','L:XL','A1A'),
('A1A-TSHIRTS-BB2.BLACK.S:M','S:M','A1A'),
('A1A-TSHIRTS-BB2.BLACK.L:XL','L:XL','A1A'),
('B2B-PANTS-CC3.BLUE.28','28','B2B'),
('B2B-PANTS-CC3.BLUE.30','30','B2B'),
('B2B-PANTS-CC3.BLUE.32','32','B2B'),
('B2B-PANTS-CC3.BLUE.34','34','B2B'),
('B2B-PANTS-CC3.BLUE.36','36','B2B'),
('B2B-PANTS-CC3.BLUE.38','38','B2B'),
('B2B-TSHIRTS-EE5.GREEN.XS','XS','B2B'),
('B2B-TSHIRTS-EE5.GREEN.S','S','B2B'),
('B2B-TSHIRTS-EE5.GREEN.M','M','B2B'),
('B2B-TSHIRTS-EE5.GREEN.L','L','B2B'),
('C3C-BLOUSE-DD4.RED.28','28','C3C'),
('C3C-BLOUSE-DD4.RED.30','30','C3C'),
('C3C-BLOUSE-DD4.RED.32','32','C3C'),
('C3C-BLOUSE-FF5.PINK.XS','XS','C3C'),
('C3C-BLOUSE-FF5.PINK.S','S','C3C'),
('C3C-BLOUSE-FF5.PINK.M','M','C3C'),
('C3C-BLOUSE-FF5.PINK.L','L','C3C')
--**
CREATE TABLE testFINAL_SORT
(
[RANGE] NVARCHAR(3) NULL,
[ITEM_SIZE] NVARCHAR(10) NULL,
[SIZE_FINAL_SORT] INT NULL
)
INSERT INTO testFINAL_SORT
values
('A1A','XS','10000'),
('A1A','S','10001'),
('A1A','M','10002'),
('A1A','L','10003'),
('A1A','XL','10004'),
('A1A','S:M','10005'),
('A1A','L:XL','10006'),
('A1A','28','10007'),
('A1A','30','10008'),
('A1A','32','10009'),
('A1A','34','10010'),
('A1A','38','10011'),
('A1A','40','10012'),
('B2B','28','10013'),
('B2B','30','10014'),
('B2B','32','10015'),
('B2B','34','10016'),
('B2B','36','10017'),
('B2B','38','10018'),
('B2B','XS','10019'),
('B2B','S','10020'),
('B2B','M','10021'),
('B2B','L','10022'),
('B2B','XL','10023'),
('C3C','28','10024'),
('C3C','30','10025'),
('C3C','32','10026'),
('C3C','34','10027'),
('C3C','36','10028'),
('C3C','XS','10029'),
('C3C','S','10030'),
('C3C','M','10031'),
('C3C','L','10032')
--**
CREATE TABLE testCARTON
(
[ITEM] NVARCHAR(30) NULL,
[QTY] INT NULL,
[PARENT_CONTAINER] NVARCHAR(30) NULL
)
INSERT INTO testCARTON
values
('A1A-TSHIRTS-AA1.RED.S','2','123'),
('A1A-TSHIRTS-AA1.RED.M','2','123'),
('A1A-TSHIRTS-AA1.RED.L','1','123'),
('B2B-PANTS-CC3.BLUE.32','3','123'),
('B2B-PANTS-CC3.BLUE.34','3','123'),
('B2B-PANTS-CC3.BLUE.36','3','123')