假设我有一个名为Abilities的表,它看起来类似于

DayOfWeek Action Strength
Sunday Walk Weak
Sunday Walk Strong
Sunday Run Strong
Monday Walk Strong

我希望能够按ActionStrength进行分组,然后判断条目是否存在于一周中的每一天:

Action Strength Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Walk Weak Y N N N N N N
Walk Strong Y Y N N N N N
Run Strong Y N N N N N N

我听说Pivot可能会做到这一点,但我想知道是否有可用的 Select ?谢谢.

推荐答案

我听说Pivot可以做到这一点,但我想知道是否有 有没有其他 Select ?

您可以这样做,如下所示:

SELECT 
  Action,
  Strength,
  MAX(CASE WHEN DayOfWeek = 'Sunday' THEN 'Y' ELSE 'N' END) AS Sunday,
  MAX(CASE WHEN DayOfWeek = 'Monday' THEN 'Y' ELSE 'N' END) AS Monday,
  MAX(CASE WHEN DayOfWeek = 'Tuesday' THEN 'Y' ELSE 'N' END) AS Tuesday,
  MAX(CASE WHEN DayOfWeek = 'Wednesday' THEN 'Y' ELSE 'N' END) AS Wednesday,
  MAX(CASE WHEN DayOfWeek = 'Thursday' THEN 'Y' ELSE 'N' END) AS Thursday,
  MAX(CASE WHEN DayOfWeek = 'Friday' THEN 'Y' ELSE 'N' END) AS Friday,
  MAX(CASE WHEN DayOfWeek = 'Saturday' THEN 'Y' ELSE 'N' END) AS Saturday
FROM Abilities
GROUP BY Action, Strength;

Sql相关问答推荐

如何实现一个广泛的多级自连接PostgreSQL查询?

为什么Postgrs Planner会在输出部分中显示我在查询中不使用的列?'""

如何用3个(半)固定位置建模团队,并有效地搜索相同/不同的团队?

使用SQL旋转表的列(Snowflake)

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

前面的语句不喜欢AND LIKE?当try 更新使用ID和日期过滤的表时

在SQL中返回缺省值,即使查询不返回任何结果

对多个条件的SQL进行排名

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

SQL:查询作为子查询或CTE写入的最大和数失败

我如何才能在付款人单列中拉出只有9个付款人单的人?

Postgres SQL查询从字符串中获取邮箱地址

为什么左联接结果在MS Access数据库中不匹配

对现有记录进行分组

SQL SUM Filter逻辑解释

复制行并根据 Oracle SQL 中其他表的值更改值

基于字符串的SQL查询

SQL - 使用子查询返回多行的 LIKE 命令

奇怪的甲骨文行为

当计数为 0 时显示行