这里需要使用clickhouse的map操作,需要在21.3+版本

PIVOT:CREATE OR REPLACE TABLE monthly_sales(empid INT, amount INT, month TEXT) ENGINE=Memory(); INSERT INTO monthly_sales VALUES
(1, 10000, 'JAN'),(1, 400, 'JAN'),(2, 4500, 'JAN'),(2, 35000, 'JAN'), (1, 5000, 'FEB'),
(1, 3000, 'FEB'), (2, 200, 'FEB'), (2, 90500, 'FEB'), (1, 6000, 'MAR'), (1, 5000, 'MAR'),
(2, 2500, 'MAR'), (2, 9500, 'MAR'), (1, 8000, 'APR'), (1, 10000, 'APR'), (2, 800, 'APR'),
(2, 4500, 'APR');SET allow_experimental_map_type=1;WITH CAST(sumMap([month], [amount]), 'Map(String, UInt32)') AS map
SELECTempid,map['JAN'] AS JAN,map['FEB'] AS FEB,map['MAR'] AS MAR,map['APR'] AS APR
FROM monthly_sales
GROUP BY empid
ORDER BY empid ASC┌─empid─┬───JAN─┬───FEB─┬───MAR─┬───APR─┐
│     1 │ 10400 │  8000 │ 11000 │ 18000 │
│     2 │ 39500 │ 90700 │ 12000 │  5300 │
└───────┴───────┴───────┴───────┴───────┘SELECTempid,sumIf(amount, month = 'JAN') AS JAN,sumIf(amount, month = 'FEB') AS FEB,sumIf(amount, month = 'MAR') AS MAR,sumIf(amount, month = 'APR') AS APR
FROM monthly_sales
GROUP BY empid
ORDER BY empid ASC┌─empid─┬───JAN─┬───FEB─┬───MAR─┬───APR─┐
│     1 │ 10400 │  8000 │ 11000 │ 18000 │
│     2 │ 39500 │ 90700 │ 12000 │  5300 │
└───────┴───────┴───────┴───────┴───────┘UNPIVOT:
CREATE OR REPLACE TABLE monthly_sales(empid INT, dept TEXT, jan INT, feb INT, mar INT,
april INT) ENGINE=Memory();INSERT INTO monthly_sales VALUES (1, 'electronics', 100, 200, 300, 100),
(2, 'clothes', 100, 300, 150, 200),(3, 'cars', 200, 400, 100, 50);SELECTempid,dept,month,sales
FROM monthly_sales
ARRAY JOIN[jan, feb, mar, april] AS sales,splitByString(', ', 'jan, feb, mar, april') AS month
ORDER BY empid ASC┌─empid─┬─dept────────┬─month─┬─sales─┐
│     1 │ electronics │ jan   │   100 │
│     1 │ electronics │ feb   │   200 │
│     1 │ electronics │ mar   │   300 │
│     1 │ electronics │ april │   100 │
│     2 │ clothes     │ jan   │   100 │
│     2 │ clothes     │ feb   │   300 │
│     2 │ clothes     │ mar   │   150 │
│     2 │ clothes     │ april │   200 │
│     3 │ cars        │ jan   │   200 │
│     3 │ cars        │ feb   │   400 │
│     3 │ cars        │ mar   │   100 │
│     3 │ cars        │ april │    50 │
└───────┴─────────────┴───────┴───────┘参考:
https://docs.snowflake.com/en/sql-reference/constructs/pivot.html
https://kb.altinity.com/altinity-kb-queries-and-syntax/pivot-unpivot

clickhouse pivot / unpivot相关推荐

  1. SQL Server 2005之PIVOT/UNPIVOT行列转换

    SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...

  2. SQL Server 2005之PIVOT/UNPIVOT行列转换(转)

    SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞. 在SQL Server2000中,要实现行列转换,需要综 ...

  3. SQL Server中行列转换 Pivot UnPivot (转载)

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIV ...

  4. Ms sql pivot unpivot

    Ms sql pivot unpivot --建表 create table dbo.orders ( orderid int not null primary key nonclustered,or ...

  5. JAVA异常记录(ORA-56900:pivot|unpivot 操作内不支持绑定变量)

    JAVA中ORA-56900: pivot|unpivot 操作内不支持绑定变量 ORA-56900: pivot|unpivot 操作内不支持绑定变量 使用场景及遇到问题 解决方法:在java中拼好 ...

  6. oracle unpivot 用法,PIVOT/UNPIVOT的用法

    转贴: SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞. 在SQL Server2000中,要实现行列转换 ...

  7. isnull pivot server sql_SQLServer行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...

  8. 【转】SQL Server中行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...

  9. SQL Server中行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P ...

最新文章

  1. 【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
  2. (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统
  3. 笔记-企业管理知识-知识管理
  4. redis的安装和测试
  5. workbench拓扑优化教程_workbenchds拓扑优化分析.ppt
  6. 【LeetCode - 122】买卖股票的最佳时机 II(贪心 或 dp)
  7. linux命令行抓取网页快照-(xvfb+CutyCapt)
  8. magento 增加一个layout template
  9. 用css去除chrome、safari等webikt内核浏览器对控件默认样式
  10. MathType输入框怎么调整
  11. K3CLOUD表关联
  12. 双网卡同时上内外网设置教程
  13. python实现科赫雪花的绘制(最简单)
  14. (转)[原创]在ios android设备上使用 Protobuf (使用源码方式)
  15. Win10安装Fliqo翻页时钟屏保
  16. 坚持学英语 -- 公司前台MM 一日英语小记
  17. 小精灵家庭理财 v3.01 是什么
  18. 请简述计算机安全的定义 现,2012年12月考试计算机基础第三次作业.doc
  19. 使用CStdioFile::ReadString来逐行读取文件
  20. # R语言——约瑟夫环

热门文章

  1. 2. NoteExpress安装与基本使用
  2. 在google earth 显示实时轨迹
  3. IOS手机端页面在项目中遇到的一些问题及解决办法
  4. 【微信小程序】真机调试引用的外部字体不生效问题
  5. Django实现迷你淘宝(四) --- 基于Bootstrap的商品页面设计与美化
  6. java oom-killer_oom-killer
  7. 国产免费高性能桌面录屏软件LiveView1.0正式发布
  8. ubuntu 18.04 关掉sudo密码
  9. 管理多租户环境之PDB快照
  10. 超简单集成!手把手教你实现音频编辑能力