我有一个问题,我想在单个列中查找语句,每次找到它们时都会在组合中插入一个新列。我正在使用 mysql 数据库。
例如说我有这样的数据
Class Sub
-----------------
1 math
1 tech
2 math
2 english
3 math
我希望数据这样输出:
Class math tech english
---------------------------
1 Y Y N
2 Y N Y
3 Y N N
我正在尝试使用 CASE
语句来查找列中的值,但问题是它只会在列中为它找到的值返回一个结果,我最终得到同一类重复每列的 case 语句。组合 case 语句不会起作用,因为它仍然给我一个列。
最佳答案
您需要将 CASE
表达式包装在一个聚合中并添加一个 GROUP BY
。在这种情况下,MAX
将按字母顺序工作,因为 Y
在 N
SELECT class,
MAX(CASE
WHEN ( community_id = 'Math' ) THEN 'Y'
ELSE 'N'
END) AS Math,
MAX (CASE
WHEN ( community_id = 'tech' ) THEN 'Y'
ELSE 'N'
END) AS tech,
MAX (CASE
WHEN ( community_id = 'english' ) THEN 'Y'
ELSE 'N'
END) AS english
FROM x_class_community
GROUP BY class
关于mysql - 使用 case 语句插入列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977000/