SQL 行转列 详细分析
来源:互联网 发布:滚齿机挂轮计算软件 编辑:程序博客网 时间:2024/06/06 07:24
表结构如下:
登录名 权限 权限id 用户名
admin 系统首页 1 孟灵
admin 采购进货 2 孟灵
admin 销售出货 3 孟灵
admin 查看库存 4 孟灵
admin 客户管理 5 孟灵
qy 系统首页 1 钱宇
qy 查看库存 4 钱宇
qy 供货商管理 6 钱宇
行专列语句:
select 登录名,用户名
max(case when 权限='采购进货' then 1 else 0 end) 采购进货,
max(case when 权限='销售出货' then 1 else 0 end) 销售出货,
max(case when 权限='查看库存' then 1 else 0 end) 查看库存,
max(case when 权限='客户管理' then 1 else 0 end) 客户管理,
max(case when 权限='供货商管理' then 1 else 0 end) 供货商管理,
max(case when 权限='销售统计' then 1 else 0 end) 销售统计,
max(case when 权限='退换货管理' then 1 else 0 end) 退换货管理,
max(case when 权限='商品分类管理' then 1 else 0 end) 商品分类管理,
max(case when 权限='员工管理' then 1 else 0 end) 员工管理
from v_qux group by 登录名,用户名
转完之后:
admin 孟灵 1 1 1 1 0 0 0 0 0
qy 钱宇 0 0 1 0 1 0 0 0 0
case when (列明)='值' then 1 else 0 end 的意思: 差不多和if语句差不多, 如果列明等于值 就返回真 就执行 then 后面的, 如果列明不等于值 就返回假 就执行 else 后面的 在至于end 就是格式问题
重点:切忌 这是按行来比较的
首先如表:查询出第一行(admin 系统首页 1 孟灵)然后拿出第一行权限的那列(系统首页)和 max(case when 权限='采购进货' then 1 else 0 end)采购进货,
max(case when 权限='销售出货' then 1 else 0 end) 销售出货,
max(case when 权限='查看库存' then 1 else 0 end)查看库存,
max(case when 权限='客户管理' then 1 else 0 end) 客户管理,
max(case when 权限='供货商管理' then 1 else 0 end)供货商管理,
max(case when 权限='销售统计' then 1 else 0 end) 销售统计, max(case when 权限='退换货管理' then 1 else 0 end) 退换货管理, max(case when 权限='商品分类管理' then 1 else 0 end) 商品分类管理,
max(case when 权限='员工管理' then 1 else 0 end) 员工管理
这些按个比较(比较什么:比较第一行(也就是上面如表所示的权限那列)) 咱们把所有的有可能的都列出来, 如果有符合的就让他下面的那列值是“1” 如果没有符合的就让他下面那列值是“0”,比较晚之后 在比较 第二列以此类推
- SQL 行转列 详细分析
- SQL语句详细分析
- SQL注入原理详细分析
- SQL Server 2005视图详细分析
- 关于SQL Server中密码问题详细分析
- 提升Oracle性能之SQL的优化详细分析
- MYSQL中对SQL性能分析方法 Explain 详细解释
- sql 行转列,总结分析
- SQL优化-同SQL不同执行计划-(CLOB详细分析1)
- SQL优化-同SQL不同执行计划-(CLOB详细分析2)
- SQL优化-同SQL不同执行计划-(CLOB详细分析1)
- FFMpeg分析详细分析
- FFMpeg分析详细分析
- FFMpeg分析详细分析
- Ucenter Home SQL注入漏洞详细分析(需要GPC=OFF)
- SDWebImage分析--源代码详细分析
- dump分析超级详细分析
- SQL NorthWind详细说明
- ExtJs grid 的属性
- ajax对json的处理
- 上拉电阻下拉电阻的总结-转载
- 解决View中的onDraw 不会自动调用
- VideoLAN---VLC源代码分析
- SQL 行转列 详细分析
- C#实现窗体圆角的一种方法
- 温总理历次发言引用古诗文
- sort和qsort使用模板
- Android之Fragment静态实现实例
- java.lang.OutOfMemoryError: GC overhead limit exceeded解决
- 常用sql
- 如何更改XP系统默认字体 <讨论话题>……
- 页面数据导出CSV格式文件