当一组行包含布尔数据时,为具有相同ID的一组行显示一个数值

时间:2019-06-27 10:17:32

标签: sql sql-server

我正在编写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种可能性。

我希望查询的最终结果将具有相同GUID的“ q1_X”行分组,并将其布尔值“转换”为一个数字-1,2或3,具体取决于“ true”值在哪里:

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

1 个答案:

答案 0 :(得分:0)

您需要字符串函数,例如left()right()charindex()

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

请参见demo
结果:

> guid | question | value
> ---: | :------- | :----
>    1 | q1       | 2    
>    1 | q2       | 3