gpt4 book ai didi

sql - 多行数据转换为单行数据

转载 作者:行者123 更新时间:2023-12-01 22:56:51 24 4
gpt4 key购买 nike

我正在使用 SQLite,我真的很环保。基本上我有一个表(下面的示例)

ID  Date    QuestNum    Value
1 1/1/1990 1 0
1 1/1/1990 2 3
1 1/1/1990 3 2
1 1/2/1990 1 5
1 1/2/1990 2 2
1 1/2/1990 3 6
2 1/1/1990 1 6
2 1/1/1990 2 3
2 1/1/1990 3 6
2 1/2/1990 1 2
2 1/2/1990 2 8
2 1/2/1990 3 2

我希望我的查询结果看起来像这样
ID  Date    Quest1  Quest2  Quest3
1 1/1/1990 0 3 2
1 1/2/1990 5 2 6
2 1/1/1990 6 3 6
2 1/2/1990 2 8 2

我得到的最接近的是
SELECT 
ID, Date,
MAX(CASE WHEN QuestNum = "1" THEN Value END) AS Q1,
MAX(CASE WHEN QuestNum = "2" THEN Value END) AS Q2,
MAX(CASE WHEN QuestNum = "3" THEN Value END) AS Q3,
FROM table
GROUP BY subjID, Date

虽然这确实提供了我正在寻找的结构,但它应用了 MAX 聚合函数,我担心生成的查询包含与原始集合不同的数据;这样 Quest 1、Quest 2、Quest 3 列中返回的值是该选定列中的最大值,而不是值列中的相应数据点。

我不确定要注意是否重要,但 QuestNum 有时可以跳过,所以不是每个人都会收到所有问题。

谢谢,
qwerty

请原谅我的请求中的任何用词不当,相信我它们都是无意的。

最佳答案

本质上,您需要 转置 你的行到列或 reshape 从长格式到宽格式。在 SQL 中,这可以通过派生表(子查询类型)来完成:

SELECT 
[ID],
[Date],
Max(CASE WHEN QuestNum = "1" THEN [Value] END) As Q1,
Max(CASE WHEN QuestNum = "2" THEN [Value] END) As Q2,
Max(CASE WHEN QuestNum = "3" THEN [Value] END) As Q3
FROM (SELECT
[ID],
[Date],
QuestNum,
[Value]
FROM TableName)
AS dT
GROUP BY [ID], [Date]

关于sql - 多行数据转换为单行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com