插入带有case语句的列

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

例如说我有这样的

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表达式汇总并添加GROUP BY。在这种情况下MAX将作为字母Y来后N

(SQL Fiddle Demo)

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

回答:

您需要使用PIVOT功能。您还没有指定您的DBMS,但是这里是一个链接的SQL Server:Using PIVOT and UNPIVOT

回答:

如果您正在使用SQL Server,那么你可以使用PIVOT功能:

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

的结果是:

| CLASS | MATH | TECH | ENGLISH | 

---------------------------------

| 1 | Y | Y | N |

| 2 | Y | N | Y |

| 3 | Y | N | N |

以上是 插入带有case语句的列 的全部内容, 来源链接: utcz.com/qa/267055.html

回到顶部