0

我必须执行我认为非常基本的 MYSQL 表数据透视,但我对 sql 完全陌生,所以我不确定语法。我有下表

record_id tag_id
id_1      tag1
id_1      tag2
id_2      tag1
id_2      tag3

我想获得一个数据透视表,其行是唯一的 record_ids,列是唯一的 tag_ids,如果该 record_id 具有该标签,则值为布尔值 true/false。在这种情况下,预期的结果将是:

record_id tag1  tag2  tag3
id_1      true  true  false
id_2      true  false true

我怎样才能做到这一点?

进一步的问题:如果我有另一个将 tag_names 与 tag_id 关联的表,并且我希望我的透视表的列以 tag_names 命名,该怎么办?在这个例子中,从

tag_id tag_name
tag1   tag_name1
tag2   tag_name2
tag3   tag_name3

我最终会得到

record_id tag_name1  tag_name2  tag_name3
id_1      true       true       false
id_2      true       false      true

我很感激任何帮助。

4

1 回答 1

1
SELECT record_id,
       CASE WHEN SUM(tag_id = 'tag1') THEN 'true' ELSE 'false' END tag1,
       CASE WHEN SUM(tag_id = 'tag2') THEN 'true' ELSE 'false' END tag2,
       CASE WHEN SUM(tag_id = 'tag3') THEN 'true' ELSE 'false' END tag3
FROM source_table
GROUP BY record_id
ORDER BY record_id
于 2020-08-03T11:26:34.040 回答