我不知道如何在sqlite中编写来自此表的查询:
image_id | feature_id | feature_val
_________|____________|____________
12 | 1 | 41
12 | 2 | 82
12 | 3 | 75
74 | 1 | 23
74 | 2 | 35
74 | 3 | 72
返回结果表:
image_id | feature_1_val | feature_2_val | feautre_3_val
_________|_________________|_______________|_______________
12 | 41 | 82 | 75
74 | 23 | 35 | 72
我们可以假设图像特征的数量是恒定的并且等于3。 我非常感谢你的帮助。
答案 0 :(得分:0)
将行转换为列的过程称为pivoting
。最好是在客户端完成。例如,Microsoft Excel通过数据透视表提供了广泛的支持。
但是在SQL中并非不可能。以下是使用max(case(
技巧的一个示例:
select image_id
, max(case when feature_id = 1 then feature_val end) as feature_1_val
, max(case when feature_id = 2 then feature_val end) as feature_2_val
from YourTable
group by
image_id
答案 1 :(得分:0)
考虑到问题中列出的限制,您可以使用子查询创建一种不优雅但可行的方法:
SELECT it.image_id,
(SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 1) AS feature_1_val,
(SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 2) AS feature_2_val,
(SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 3) AS feature_3_val
FROM ImageTable AS it
GROUP BY it.image_id