SQL数据表纵横转换
SELECT DISTINCT
'(select b.risk from rhwl_easy_genes_new_risk b where b.genes_id=a.id and b.disease=''' || b."disease" || ''') as "' || b."disease" || '",'
FROM
rhwl_easy_genes_new A,
rhwl_easy_genes_new_risk b
WHERE
b.genes_id = A.ID
AND A.NAME IN (
SELECT A
.NAME
FROM
rhwl_easy_genes_new A
WHERE
A.active = TRUE
AND A.NAME NOT LIKE'CS%'
AND A.package_id IN (
SELECT ID
FROM
rhwl_genes_base_package
WHERE
code IN ( 'FV', 'JE', 'JC' )));
通过去重,会生成列的select语句:
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='不宁腿综合征') as "不宁腿综合征",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='萘普生') as "萘普生",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='耐力') as "耐力",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='抗雀斑能力') as "抗雀斑能力",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='利培酮') as "利培酮",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='帕金森病') as "帕金森病",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='顺铂') as "顺铂",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='霍奇金淋巴瘤') as "霍奇金淋巴瘤",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='哮喘') as "哮喘",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='酒精性肝硬化') as "酒精性肝硬化"
把上面的语句插入, 生成最终查询:
SELECT
p.name as "套餐",
a.name as "样本编号",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='不宁腿综合征') as "不宁腿综合征",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='萘普生') as "萘普生",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='耐力') as "耐力",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='抗雀斑能力') as "抗雀斑能力",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='利培酮') as "利培酮",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='帕金森病') as "帕金森病",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='顺铂') as "顺铂",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='霍奇金淋巴瘤') as "霍奇金淋巴瘤",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='哮喘') as "哮喘",
(select b.risk from rhwl_easy_genes_new_risk b where b.active=True and b.genes_id=a.id and b.disease='酒精性肝硬化') as "酒精性肝硬化"
FROM
rhwl_easy_genes_new a,
rhwl_genes_base_package p where a.state in ('report_done', 'done', 'result_done', 'deliver') and a.active = True and a.name not like 'CS%' and a.package_id in (select id from rhwl_genes_base_package where code in ('FV', 'JE', 'JC')) and p.id = a.package_id order by p.name, a.name
SQL数据表纵横转换的更多相关文章
- asp.net 查询sql数据表的网页模板
最近因为工作需求,要制作一个网页模板,主要是用于快速开发,可以查询Sql数据表信息的模板, 昨天做好了,这个只是一个Demo,但是功能已经齐全了, 开发新的网站时,需要新增一个xml,复制粘贴网页的前 ...
- 关于SQL 数据表中的密码加密
首先,都知道一个字节(byte)等于八位二进制数.在数据表中将密码字段设置为binary类型,再结合哈希散列运算可以实现密码加密. 下面介绍下binary 和 varbinary: binary 和 ...
- sql数据表的设计思路
好的表结构分的比较细致,个人理解大概主要分为主表.明细.历史记录表.中间表,辅助表结构应该分为:类型表.状态表.统计表.统计明细表等.为了一个功能加那么多表实在是多余,如果写一个非常复杂的业务逻辑还是 ...
- 查找SQL数据表或视图中的字段属性信息
一.只支持表,非常牛逼的 SELECT a.name,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name F ...
- qt: 获取sql数据表的所有的字段;
1. mysql 数据库: 转载: https://www.cnblogs.com/fuqia/p/8994080.html mysql安装成功后可以看到已经存在mysql.information_s ...
- sql数据表中的值重新命名
select u.id,u.name,u.sex, 2 (case u.sex 3 when 1 then '男' 4 when 2 then '女' 5 else '空的' 6 end 7 )性别 ...
- SQL数据表插入随机数(转)
declare @T TABLE (id int identity(1,1),[Name] nvarchar(20), Randnum int) insert @T ([Name]) select ' ...
- 手动创建sql数据表
createtable tb ( ID int IDENTITY (1,1) notnull, --创建列ID,并且每次新增一条记录就会加1 WokNo ...
- Sql数据表中的关系
随机推荐
- 最常见VC++编译错误信息集合
1.fatal error C1010: unexpected end of file while looking for precompiled header directive. 寻找预编译头文件 ...
- shell脚本实现取当前时间
shell 实现获取当前时间,并进行格式转换的方法: 1)原格式输出 2018年 09月 30日 星期日 15:55:15 CST time1=$(date) echo $time1 2)时间串输出 ...
- 如何用Maven创建web项目(具体步骤)转载
使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 本文转载于(http://blog.csdn.net/chuyuqing/article/detai ...
- POJ1149_PIGS(网络流/EK)
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15721 Accepted: 7021 Description ...
- 2018-8-10-VisualStduio-打断点调试和不打断点调试有什么区别
title author date CreateTime categories VisualStduio 打断点调试和不打断点调试有什么区别 lindexi 2018-08-10 19:16:52 + ...
- winsock 服务器代码(不建议win服务器listen防火墙会禁止外部访问的)
int SessionBase::ServerSock() { /* 4 * WSADATA是个结构体,在WSAStartup中被填充. 5 * WSAStartup为调用WinSock准备初始化的工 ...
- AOP与IOC的概念(即spring的核心)
a) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度.而spring的核心是IOC控制反转和AOP面向切面 ...
- Linux的s、t、i、a权限(转)
原文链接:http://blog.chinaunix.net/uid-712656-id-2678715.html 文件权限除了r.w.x外还有s.t.i.a权限: s:文件属主和组设置SUID和GU ...
- AM8后台历史数据手工清理方法
AM8后台历史数据手工清理方法 数据清理目前通过bat脚本将windows任务计划来完成 Bat 路径位置: \ActiveSoft\Am8Svr\STKServer\Data (请根据服务安装 ...
- js实现F5键刷新后菜单保持之前状态以及监听F5页面刷新子iframe 而父页面不刷新
利用layui实现菜单效果时,刷新页面仍回到首页状态,需要 实现iframe子页面刷新父元素不刷新,下面是代码 //刷新时禁用F5的默认事件 $(document).keydown(function ...