Как добавить идентификатор 'flag' в новый столбец временной таблицы как часть выражения CTE в SQL Server 2017? - PullRequest
0 голосов
/ 03 мая 2020

Я новичок SQL на сервере и создал оператор WITH для выполнения сравнения наборов данных.

Поскольку я выполняю серию манипуляций, сначала консолидирую свой основной набор данных A из ряда вторичных таблиц, а затем выверки, а затем фильтров для проверки конкретных c условий. Я подумал, что для этой цели лучше всего использовать CTE.

Теперь я нахожусь на этапе, на котором я определил несколько категорий исключений, которые я хотел бы добавить в финальную таблицу в конце оператора, и хотел бы пометить их в столбце fre sh как I go. См. Пример ниже:

Exception_Table_1
(col1, col2, col3, col4, col5)
AS
(
SELECT * FROM Source_Table WHERE <filter here>
)
;

Exception_Table_2
(col1, col2, col3, col4, col5)
AS
(
SELECT * FROM Source_Table WHERE <filter here>
)

INSERT INTO
destination_table
SELECT * FROM Exception_Table_1
UNION ALL
SELECT * FROM Exception_Table_2

Структура таблицы, типы данных одинаковы во всей исходной таблице, и результирующие таблицы исключений являются фильтрованными представлениями этой исходной таблицы. В качестве дополнительного осложнения таблицы исключений подвергаются дальнейшей сегментации, но я оставлю это пока.

Мой вопрос - могу ли я добавить новый столбец в обеих таблицах исключений 1 и 2, который имеет значение по умолчанию «1» и «2», что указывает на природу исключения, которое также может быть скопировано в целевую_таблицу?

Мой код работает, как показано выше - но так как нет идентификатора, я также имел создавать «настоящие» таблицы для таблиц исключений 1 и 2, просто для подсчета чисел в каждой категории, что в первую очередь лишает смысла использование CTE.

Я смотрел в другом месте на форуме, и нет, использование ALTER / UPDATE, похоже, не помогает.

SQL Server 2017 кстати.

Я с нетерпением жду ваших ответов и благодарю вас за то, что нашли время помочь; высоко ценится!

1 Ответ

0 голосов
/ 07 мая 2020

ОБНОВЛЕНИЕ: Проблема решена :) Большое спасибо Джонатан - однако, этот синтаксис не работает, боюсь. В итоге я использовал функцию CAST следующим образом: SELECT *, CAST ('default_value' AS varchar (8)) AS col6 FROM .... et c. в каждой таблице исключений CTE. Результатом стал аккуратно маркированный набор исключений для анализа, и это также означает, что у меня есть все данные, которые я хочу, в 1 таблице вместо 5 :)

...