首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用case语句插入列

使用case语句插入列
EN

Stack Overflow用户
提问于 2012-12-21 00:59:22
回答 3查看 430关注 0票数 1

我有一个问题,我希望在单个列中查找语句,每次找到它们时,都会在混合列中插入一个新的列。我正在使用mysql数据库。

例如,假设我有这样的数据

代码语言:javascript
运行
复制
  Class     Sub
  -----------------
    1       math       
    1       tech 
    2       math
    2       english
    3       math

我希望数据像这样输出:

代码语言:javascript
运行
复制
Class    math  tech english
---------------------------
    1      Y     Y     N
    2      Y     N     Y
    3      Y     N     N

我尝试使用CASE语句来查找列中的值,但问题是它只返回列中找到的值的一个结果,并且最终得到的是同一个类,每个列都有一个case语句。组合case语句将不起作用,因为这仍然给我一个单独的列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-21 01:01:45

您需要将CASE表达式包装在一个聚合中,并添加一个GROUP BY。在本例中,MAX的工作方式是按字母顺序排列的YN之后

(SQL Fiddle Demo)

代码语言:javascript
运行
复制
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 
票数 4
EN

Stack Overflow用户

发布于 2012-12-21 01:02:53

您需要使用PIVOT功能。您尚未指定您的数据库管理系统,但这里有一个指向SQL Server的链接:Using PIVOT and UNPIVOT

票数 0
EN

Stack Overflow用户

发布于 2012-12-21 01:27:50

如果您使用的是SQL Server,则可以使用PIVOT函数:

代码语言:javascript
运行
复制
select class,
  isnull(math, 'N') math, 
  isnull(tech, 'N') tech, 
  isnull(english, 'N') english
from
(
  SELECT class, community_id, 'Y' as flag
  FROM   x_class_community
) src
pivot
(
  max(flag)
  for community_id in (math, tech, english)
) piv

请参阅SQL Fiddle with Demo

结果是:

代码语言:javascript
运行
复制
| CLASS | MATH | TECH | ENGLISH |
---------------------------------
|     1 |    Y |    Y |       N |
|     2 |    Y |    N |       Y |
|     3 |    Y |    N |       N |
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13977000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档