sql - 如何在 SQL Server 中将 2 列拆分为 4 列?
问题描述
我有一个查询,它显示了一个包含 Id、问题和回复的表。我需要将我的列问题和回复拆分为 4 列(Q1、R1、Q2、R2)。如何同时使用两列执行此操作?我找到了答案,只有一列到两列才有帮助。
解决方案
您可以使用条件聚合:
select id,
'Q1' as question_1,
max(case when question = 'Q1' then reply end) as reply1,
'Q2' as question_2,
max(case when question = 'Q2' then reply end) as reply2
from t
group by id;
编辑:
您可以使用相同的想法row_number()
:
select id,
max(case when seqnum = 1 then question end) as question1,
max(case when seqnum = 1 then reply end) as reply1,
max(case when seqnum = 2 then question end) as question2,
max(case when seqnum = 2 then reply end) as reply2
from (select t.*,
row_number() over (partition by id order by question) as seqnum
group by id;
推荐阅读
- linux - 脚本不会自动从 root 切换到普通用户
- python - This issue about keras model and how to compile the model
- twitter-bootstrap - CSS Bootstrap 两列布局
- php - 如何解决 XAMPP 中的禁止访问问题
- c# - C# 事件订阅者排队
- pandas - 如何将 Keras 输入的形状纠正为 3D 数组
- c - 为什么 FREAD 在 Linux 上给出错误,但在 Windows 上却没有?
- android - 可扩展的 Recyclerview Android
- python-3.x - 电报错误 401:通过电报 cli 注册后的 USER_DEACTIVATED
- c - “make clean”的任务配置在 Visual Studio 2017 中不起作用