【问题标题】:SQL ROW TO COLUMN [duplicate]SQL ROW TO COLUMN [重复]
【发布时间】:2014-07-26 12:36:20
【问题描述】:

我有一张如下表 操作

OPERATOR-OPERATION TYPE
Ahmet   DELETE
Ahmet   UPDATE
Ahmet   READ
Salih   DELETE
Salih   UPDATE
Salih   READ
Salih   READ
Salih   CREATE

什么 SQL 将得到以下结果?简单 COUNT 时,GROUP BY 子句使用 Operation 类型,写成 ROW based。

Name- Total- DELETE- READ- UPDATE  CREATE
Ahmet 3      1       1     1       0
Salih 5      1       2     1       1 

【问题讨论】:

  • 这取决于您的 RDBMS。你能用这个标记你的问题吗?这被称为 PIVOT 操作 - 关于 SO 有很多与此相关的问题。

标签: sql oracle


【解决方案1】:
select operator, 
       count(*) as total,
       sum(case when operation_type = 'DELETE' then 1 else 0 end) as deletes,
       sum(case when operation_type = 'UPDATE' then 1 else 0 end) as updates,
       sum(case when operation_type = 'READ' then 1 else 0 end) as reads,
       sum(case when operation_type = 'CREATE' then 1 else 0 end) as creates
from operations
group by operator

【讨论】:

  • 如果 OP 位于支持 PIVOT 的数据库上,这可能不是最好的方法...您缺少总计并且没有正确大写操作类型...
  • 有没有办法通过读取 OPERATION_TYPES 表来自动添加运算符类型。
猜你喜欢
  • 2020-06-12
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多