DJ - хорошее решение, но его можно упростить (см. Ниже).
Почему это должен быть один оператор?
Что не так с:
insert into #MapTable (category,code) values ('Foo','AAAAA')
insert into #MapTable (category,code) values ('Foo','BBBBB')
insert into #MapTable (category,code) values ('Foo','CCCCC')
insert into #MapTable (category,code) values ('Bar','AAAAA')
Для меня это намного легче читать и поддерживать.
Упрощенное DJ-решение:
CREATE TABLE #MapTable (Category varchar(40), Code char(5))
INSERT INTO #MapTable (Category, Code)
SELECT 'Foo', 'AAAAA'
UNION
SELECT 'Foo', 'BBBBB'
UNION
SELECT 'Foo', 'CCCCC'
SELECT * FROM #MapTable
В диджеях нет ничего плохого, мне это показалось слишком сложным.
Из ОП:
Проблема, которую я пытаюсь решить, не столько сводит ее к одному утверждению, сколько
пытается избежать повторного ввода названия категории.
Я чувствую вашу боль - я тоже пытаюсь найти такие ярлыки и понимаю, что к тому времени, когда я решу проблему, я мог бы набрать ее длинной рукой.
Если у меня есть много повторяющихся данных для ввода, я иногда использую Excel для генерации кодов вставки для меня. Поместите категорию в один столбец, а код - в другой; использовать все полезные методы копирования, чтобы выполнить тяжелую работу
затем
="insert into #MapTable (category,code) values ('"&A1&"','"&B1&"')"
в третьем ряду, и я сгенерировал вставки
Конечно, все это предполагает, что категории и коды не могут быть извлечены из системной таблицы.