Я застрял со странной проблемой, которая убивает меня.У меня есть таблица, которая в основном сводится к следующему:
CREATE TABLE #Sample (ColA VARCHAR (20), ColB VARCHAR (20), ColC VARCHAR (20), ColD VARCHAR (10), ColE VARCHAR (10) )
INSERT INTO #Sample VALUES ('6250', '1001', '12AA', '12AA', ''),
('6250', '1002', '12AA', '12AA', ''),
('6251', '1003', '12BB', '12BB', 'A'),
('6252', '1004', '12CC', '12CC', '')
Я получил спецификации для формы заказа на доставку.Для каждого значения ColB я должен повторить следующие шаги, чтобы создать один выходной столбец.Первые две строки - текст, вторая и третья - префиксы + значения из столбцов B и C. В качестве бонуса, только если заполнен ColE, мы должны выбрать префикс плюс ColE.
Возможно, это звучит странно,поэтому я добавлю желаемый результат:
'A1 Text'
'A2 Text'
'ZZ62501001' -- ZZ prefix + ColA + ColB
'ZZ12AA' -- ZZ prefix + ColC
'A1 Text'
'A2 Text'
'ZZ62501002' -- ZZ prefix + ColA + ColB
'ZZ12AA' -- ZZ prefix + ColC
'A1 Text'
'A2 Text'
'ZZ62511003' -- ZZ prefix + ColA + ColB
'ZZA' -- ZZ prefix + ColE (notice that this is only shown when ColE is filled)
'ZZ12BB' -- ZZ prefix + ColC
'A1 Text'
'A2 Text'
'ZZ62521004' -- ZZ prefix + ColA + ColB
'ZZ12CC' -- ZZ prefix + ColC
В этой настройке так много неправильного, но я не имею никакого влияния на этот вопрос.Так что я застрял с этой проблемой.
Я пытался сначала создать «обычную» выходную таблицу, а затем попытаться создать новую с одним столбцом.
Моя попытка кода,что довольно плохо, но я все равно включу его:
CREATE TABLE #Output ( ColA VARCHAR (100),
ColB VARCHAR (100),
ColC VARCHAR (100),
ColD VARCHAR (100),
ColE VARCHAR (100) )
DECLARE @Counter INT
SET @Counter = 1
WHILE @Counter < ( SELECT MAX (RowNumb) FROM #Sample )
BEGIN
INSERT INTO #Output
SELECT 'A1 Text',
'A2 Text',
'ZZ' + ColA + ColB, -- ZZ prefix + ColA + ColB
'ZZ' + ColC,
'ZZ' + ColE
FROM #Sample
SET @Counter = @Counter + 1
END
SELECT * FROM #Output
Если кто-нибудь сможет решить эту странную проблему, которая у меня есть, и создать желаемый результат, я был бы очень признателен.
Производительностьздесь нет ничего особенного, имея дело с парой тысяч строк, поэтому курсор или цикл не являются проблемой.