Распечатка списка описаний атрибутов на основе логических столбцов в SQL

У меня есть таблица с несколькими булевыми столбцами, такими как: IsProductionWorker, IsMaterialHandler, IsShopSupervisor и т. Д. Запись в этой таблице может иметь несколько значений этих столбцов как истинные.

То, что я хотел бы сделать, это запрос, который возвращает 1 поле со списком всех атрибутов, которые являются истинными, например AttributeList, который, если бы эти 3 столбца были истинными, вернется: «Рабочий -производитель, Обработчик материалов, Супервайзер магазина».

Я могу придумать несколько методов грубой силы и, возможно, более элегантный метод с помощью таблицы temp (раньше я делал подобные вещи), но мне любопытно, какой лучший способ сделать это будет и если есть более простые реализации.

Благодарю.

На самом деле, нет элегантности. Простота, да.

Для каждой строки вы хотите изменить флаг в строку для каждого флага. Не много вариантов умения …

SELECT SUBSTRING ( CASE WHEN IsProductionWorker = 1 THEN ', Production Worker' ELSE '' END + CASE WHEN IsMaterialHandler= 1 THEN ', Material Handler' ELSE '' END + CASE WHEN IsShopSupervisor= 1 THEN ', Shop Supervisor' ELSE '' END + ... , 3, 8000) FROM MyTable WHERE ... 

Вы можете попробовать это.

 select CASE WHEN isProductionWorker = 1 THEN 'Production Worker' ELSE '' END + CASE WHEN cast(isProductionWorker as int) + isMaterialHandler = 2 THEN ', ' else '' END + CASE WHEN isMaterialHandler = 1 THEN 'Material Handler' ELSE '' END + CASE WHEN cast(isProductionWorker as int) + isMaterialHandler + isShopSupervisor > 1 THEN ', ' else '' END + CASE WHEn isShopSupervisor = 1 THEN 'Shop Supervisor' ELSE '' END AS AttributeList from MyTable 
Interesting Posts

Эквивалент управления транзакцией MongoDB Вход в SQL Server?

Значения групп и значений для каждой записи в SQL

Доступ к удаленному серверу запрещен, поскольку текущий контекст безопасности не доверен, агент SQL-сервера

добавьте столбец, показывающий количество записей для этого идентификатора до даты

Как использовать wild card в середине SQL-сервера, например запроса

Подключение NetBeans 8.0.2 к Microsoft SQL Server Management Studio

Автоматическое присвоение индексов SQL Server при создании таблиц

SQL Server – RegEx – Фильтрация строк с нежелательными символами

Облачные / размещенные службы базы данных / хранилища данных для замены локального экземпляра SQL Server

Отображение нескольких строк из базы данных в приложение WPF

Как выбрать записи из таблицы с определенным количеством строк в связанной таблице в SQL Server?

Обновление SQL Server с использованием производительности Sub Query

SQL Server 2012: как индекс столбца может содержать сразу несколько столбцов?

Для каждого запроса SQL типа

Можем ли мы получить доступ к базе данных Microsoft SQL Server в WAN?

Давайте будем гением компьютера.