Показать одно числовое значение для группы строк с одинаковым идентификатором, если группа строк содержит логические данные - PullRequest
0 голосов
/ 27 июня 2019

Я пишу приложение Node js на практике и использую существующую базу данных SQL Server (пытаюсь переписать существующую внешнюю оболочку .NET, которая использует ту же базу данных, но не обладает гибкостью отчетности).

Мне нужно запросить таблицу «опрос», состоящую из (guid, questionTag и value). Я не знаю, почему эта таблица разработана так, но я не могу ее изменить.

guid     question   value
----------------------------
 1         q1_1     false
 1         q1_2     true
 1         q1_3     false
 1         q2_1     false
 1         q2_2     false
 1         q2_3     true
...

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

value происходит из формы HTML и представляет переключатель, выбранный пользователем. Пользователю задают два вопроса, каждый из которых имеет 3 варианта.

Я бы хотел, чтобы конечный результат запроса сгруппировал строки «q1_X» с одинаковым guid и «перевел» их логические значения в одно число - 1,2 или 3 в зависимости от того, где «истинное» значение:

guid     question   value
---------------------------
 1          q1        2
 1          q2        3

1 Ответ

0 голосов
/ 27 июня 2019

Вам нужны строковые функции, такие как left(), right() и charindex():

select 
  guid,
  left(question, charindex('_', question) - 1) question,
  right(question, len(question) - charindex('_', question)) value
from tablename  
where value = 'true'

См. демо .Результаты:

> guid | question | value
> ---: | :------- | :----
>    1 | q1       | 2    
>    1 | q2       | 3    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...