select 身份证号码,
MAX(t.单位编号) 单位编号,
MAX(t.姓名) 姓名,
MAX(case when t.rows=1 then convert(varchar(max),疾病名称) end) 疾病1,
MAX(case when t.rows=2 then convert(varchar(max),疾病名称) end) 疾病2,
MAX(t.单位名称) 单位名称,
MAX(t.医院编码) 医院编码,
MAX(t.医院名称) 医院名称,
MAX(t.人员类别) 人员类别,
max(t.性别) 性别
from(select
ROW_NUMBER() over(partition by 身份证号码 order by 姓名) as rows,
case
when len(身份证号码) = 15 and cast(substring(身份证号码,15,1) as int) % 2 = 0 then '女'
when len(身份证号码) = 15 and cast(substring(身份证号码,15,1) as int) % 2 = 1 then '男'
when len(身份证号码) = 18 and cast(substring(身份证号码,17,1) as int) % 2 = 0 then '女'
when len(身份证号码) = 18 and cast(substring(身份证号码,17,1) as int) % 2 = 1 then '男'
else null end as 性别,*

from
dbo.tablename
)t
group by 身份证号码

row_number将group by分组中的人员编号 然后使用case when 进行区分两种疾病的人。

sql server数据库行转列及巧用case when、和row_number用法例子的更多相关文章

  1. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...

  2. SQL Server 数据库调整表中列的顺序操作

    SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装 ...

  3. SQL Server 动态行转列(轉載)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL, ...

  4. SQL SERVER特殊行转列案列一则

    今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) ...

  5. SQL server 动态行转列

    用聚合函数配合CASE语句实现行转列功能: 现在分享一下具体实现代码: 转换前效果: PlanName PlanType PlanLimit 计划1 计划类型1 RMB 1,000,000 计划1 计 ...

  6. SQL Server pivot 行转列遇到的问题

    前段时间开发系统时,有个功能是动态加载列,于是就使用了SQL Server自带的PIVOT函数进行行转列,开始用的非常溜,效果非常好.但是提交测试后问题来了,测试添加的列名中包含空格,然后就杯具了,功 ...

  7. 老生常谈之SQL Server (行转列,列转行)

    Open the first article 在本文章中主要介绍以下内容: 1.静态行转列 2.静态列转行 3.动态行转列 4.动态列转行 1.静态行转列 --静态的行转列 --新建一个科目成绩表 - ...

  8. 代码实现SQL Server动态行转列,不用存储过程

    分两步查询,第一步查询出动态列,第二步使用PIVOT函数. 代码: List<DataTable> dataTableList = new List<DataTable>(); ...

  9. sql server 2005+ 行转列

    )) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id

随机推荐

  1. Drupal中的模块载入

    什么是模块载入?首先说载入,这里的载入是指require_once.模块载入就是指require_once模块目录中的某个PHP文件. 每个Drupal模块都应该有自己的主文件.模块主文件以模块名开始 ...

  2. 彻底删除Oracle 11g的方法

    1.关闭oracle所有的服务. 可以在windows的服务管理器中关闭. 2.打开注册表:regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...

  3. centos 基础环境配置

    1,安装EPEL的yum源 EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterpri ...

  4. unity3d创建window

    unity3d创建windwo的方法如下: GUILayout.Window (, new Rect (50, 50, 200, 100), Func1, "窗口1"); 第一个参 ...

  5. Linux 基础学习(第二节)

    free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”. 为了保证Linux系统不会突然卡住宕机,因此内存使用量应该是运维人员时刻要关注的数据啦,咱们可以使用-h参数来以更人性 ...

  6. Laravel 项目开发规范

    参考:https://fsdhub.com/books/laravel-specification

  7. 点滴积累【C#】---TreeView读取数据库

    效果: 数据库: 思路: 利用for遍历,然后创建父节点,再根据父节点创建出子节点. 代码: using System; using System.Collections.Generic; using ...

  8. 在ubuntu上使用Virtual-Box安装Mininet

    使用Virtual-Box安装Mininet看上去简单,但其中也暗藏许多坑.我自己装了多次Mininet,但每次都有缺陷: mininet访问不了网络 用宿主机访问不了mininet虚拟机 最后,终于 ...

  9. vivado设计四:自定义IP核测试

    在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...

  10. [svc]几种访问google方案

    最近老被人问起,有什么访问谷歌的方法可以推荐. 针对小白用户(使用sass式即可) iass sass pass区别 小白可以用(无需安装软件,些许收费):googlegae: https://m.2 ...