Объединить несколько логических столбцов в один столбец - PullRequest
0 голосов
/ 12 марта 2020

Я создаю отчеты из системы ERP, где пользователям предоставляется флажок, который возвращает логическое значение для каждого выбранного элемента. База данных размещена на SQL сервере.

Однако пользователи могут выбрать Контракты с другими значениями, как показано ниже.

enter image description here

Я хотел бы захватить Категории как один столбец, и я не против иметь повторяющиеся строки в представлении. Я хотел бы, чтобы первая строка возвращала Контракт , а вторая - другое выбранное значение для того же ссылочного идентификатора.

enter image description here

Ответы [ 2 ]

4 голосов
/ 12 марта 2020

Вы можете использовать apply:

select distinct t.*, tt.category
from t cross apply
     ( values ('Contracts', t.Contracts),
              ('Tender', t.Tender),
              ('Waiver', t.Waiver),
              ('Quotation', t.Quotation)
     ) tt(category, flag)
where flag = 1;
1 голос
/ 12 марта 2020

Я полагаю, что простой способ таков:

select *, 'Contract' as [Category] from [TableOne] where [Contract] = 1
union all select *, 'Tender' as [Category] from [TableOne] where [Tender] = 1
union all select *, 'Waiver' as [Category] from [TableOne] where [Waiver] = 1
union all select *, 'Quotation' as [Category] from [TableOne] where [Quotation] = 1
union all select *, '(none)' as [Category] from [TableOne] where [Contract]+[Tender]+[Waiver]+[Quotation] = 0
order by [Reference ID]

Обратите внимание, что последняя строка помещается туда на тот случай, если вам нужно обработать случай с нулем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...