是否可以转置具有重复列的表?
现有表格:
user_id question_id body
1 1 'Text1 1'
1 1 'Text1 1-2'
1 2 'Text1 2'
1 3 'Text1 3'
2 1 'Text2 1'
2 2 'Text2 2'
基于
的交叉表或解决方案MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS 'question1'
不适用于此方案,因为始终匹配重复属性的最后一次出现。
我想在问题主体上进行搜索,但我不知道如何没有换位表
例如。我想在question1='...' AND question2='...'
答案 0 :(得分:1)
这是关系划分的情况。获得所需内容的两种示例查询技术:
SELECT user_id
FROM tbl
WHERE question_id = 1
AND body = 'Text1 1'
INTERSECT
SELECT user_id
FROM tbl
WHERE question_id = 2
AND body = 'Text1 2';
或者:
SELECT t1.user_id
FROM tbl t1
JOIN tbl t2 USING (user_id)
WHERE t1.question_id = 1
AND t1.body = 'Text1 1'
AND t2.question_id = 2
AND t2.body = 'Text1 2';
在此相关问题下找到更多:
How to filter SQL results in a has-many-through relation
crosstab()
只是一种以修改方式显示数据的方法。但是你正在寻找一种查询技术。这不是显示问题
您也可以在crosstab()
上找到{{1}}的许多示例,a search like this one。