sql - 当一组行包含布尔数据时,为具有相同 id 的一组行显示一个数值
问题描述
我正在编写 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
解决方案
您需要字符串函数,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
推荐阅读
- python - 通过 python 脚本发送电子邮件时获取 smtplib.SMTPRecipientsRefused
- python - 检查标签,一个数据框中的位置是否在标签中,不同长度的第二个数据框的范围熊猫
- algorithm - Elixir中频率计算的快速并发算法
- ios - 为 watchOS Simulator 构建现有框架不起作用
- windows - singtool 由于缺少私钥而失败
- sql - sql 中最新条目的状态
- nginx - 使用 Digital Ocean Kubernetes Auto-Scaling 自动降级节点可用性
- kubernetes - activeDeadlineSeconds 即将失效
- javascript - 试图实时计算我的总价,但同时显示每家公司的总价
- oracle-sqldeveloper - 如何在 SQL Developer 中运行 SQL 脚本?