数据库-一条sql怎么出来下面的效果,用distinct和union来解决

问题描述

一条sql怎么出来下面的效果,用distinct和union来解决

本人数据库不熟,拜托大家了

这是原始数据库里的数据

这是sql运行后的效果

解决方案

QQ邮件我已经回复你了
create table TEST
(
ADDRESS VARCHAR2(20),
TYPE VARCHAR2(20),
DETAIL VARCHAR2(20)
);

insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '闸北', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '宝山', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '普陀', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '浦东', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '周口', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '郑州', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '驻马店', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '洛阳', 'A地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '闸北', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '宝山', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '普陀', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('上海', '浦东', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '周口', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '郑州', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '驻马店', 'B地');
insert into TEST (ADDRESS, TYPE, DETAIL)
values ('河南', '洛阳', 'B地');
commit;

select nvl2(type, '', address) address, type, detail
from (select distinct address, '' type, '' detail
from test
union
select address, type, null detail
from test
group by type, address
union
select address, type, detail
from test
order by address, type desc, detail desc);

效果图

解决方案二:

 select distinct strone,'',''
from Table_test
union select '',strtwo,''
from Table_test
union select '','',strthree
from Table_test

解决方案三:

如果想要第二列也是像第一列一样。那么第一行Sql语句显示字段改一下就行了。
select nvl2(type, '', address) address, nvl2(detail,'',type), detail
from (select distinct address, '' type, '' detail
from test
union
select address, type, null detail
from test
group by type, address
union
select address, type, detail
from test
order by address, type desc, detail desc)

解决方案四:

改过后的效果图

解决方案五:

如果 你想 把 第二列紧挨着 。 把 语句 改成这种即可

select nvl2(type||detail, '', address) address, type,detail
from (select distinct address, '' type, '' detail
from test
union
select address, type, null detail
from test
group by type, address union all
select address,'', detail
from test
order by address,detail desc,type desc);

结果图:

时间: 2024-09-20 09:07:55

数据库-一条sql怎么出来下面的效果,用distinct和union来解决的相关文章

数据库sql-一条sql怎么显示出如下图片的效果

问题描述 一条sql怎么显示出如下图片的效果 解决方案 select 中心,服务站 from ( select distinct 中心 as c,中心,'' 服务站 from [表] union select 中心,'' ,服务站 from [表] ) d order by c asc,中心 desc 解决方案二: 不懂什么意思,前面插入一个空格? 解决方案三: 这么把,我把更具体的东西放上来 我就是要实现这个效果 解决方案四: http://ask.csdn.net/questions/222

通过一条sql语句访问不同数据库服务器中的数据库对象的方法

对象|访问|服务器|数据|数据库|语句 在我们做数据库程序开发的时候,经常会遇到这种情况:需要将一个数据库服务器中的数据导入到另一个数据库服务器的表中.通常我们会使用这种方法:先把一个数据库中的数据取出来放到某出,然后再把这些数据一条条插入到目的数据库中,这种方法效率较低,写起程序来也很繁琐,容易出错.另外一种方法是使用bcp或BULK INSERT语句,将数据导入到一个文件中,再从此文件中导出到目的数据库,这种方法虽然效率稍高,但也有很多不如意的地方,单是在导入时怎样找到另外一台机器上的数据导

sql server-求一条sql语句 sqlserver数据库

问题描述 求一条sql语句 sqlserver数据库 刷卡表,有ID,刷卡时间.时间等并和用户表形成多对一关系,使用的是sqlserver. 我要取得是"昨天,每个用户的最大刷卡时间和最小刷卡时间的刷卡数据". 我的SQL不是很好,昨天.最大刷卡时间和最小都能搞出来,但是加个每个用户就乱了: 因为每个用户都可能会有多条刷卡数据. ...求解 解决方案 select b.username, max(刷卡时间) 最大刷卡时间, min(刷卡时间) 最小刷卡时间 from 刷卡表 a inn

请大神给我写条sql查询语句,mysql 数据库,谢谢

问题描述 请大神给我写条sql查询语句,mysql 数据库,谢谢 查询第一张表为空,再去查询第2张表,不为空就取第一张表里的数据,第一张表的数据是和 第2张表里的一样的,是多表查询,谢谢,坐等大神来赐教 解决方案 要用外键的哦!select ... from a,b where a.ID=b.ID,这个是参考的哦!希望可以帮助您!

一条sql语句导致的数据库宕机问题及分析

之前分享过一篇博文,是一条sql语句"导致"的数据库宕机,上次是另有原因,这次真碰到一个案例,而且是在重要的环境上,希望大家引以为戒. 数据库是基于Linux64的版本,版本是11.2.0.2.0,已经打了最新的psu. 数据库的访问用户数大约在1000左右,当时查看服务器的cpu已经是100%了,有大约10个进程都是cpu 100%,数据库逻辑读也是超高,一秒钟大约是接近百兆的情况,sga是12G,已用了sga的自动管理(sga_target=0), 查看内存组件时发现buffer_

一条sql语句“导致”的数据库宕机问题及分析

最近测试环境需要做一些变更,把测试环境切分成两套环境,存储空间也需要压缩压缩和整理. unix组的人已经开始做空间划分了,然后我们需要在此基础上重建一套环境. 有些数据文件使用空间不大,所以准备压缩一下. 用了下面的sql语句,结果跑了十几秒中就抛了下面的错误. SQL> set linesize 200 SQL> col name for a40 SQL> col resizecmd for a80 SQL> select a.file#,a.name,a.bytes/1024/

sql语句-数据库两条检索语句中取相同元素怎么做到

问题描述 数据库两条检索语句中取相同元素怎么做到 目前有两条数据库检索语句 查询同一张表 分别得到部分记录,然后我想找到A语句中所有记录有哪些是在B语句查询结果中出现的,怎么做到? A语句: select id from mytab where age > 25 B语句: select id from mytab where city = 'beijing' 现在想查找B结果中有哪几个是在A结果中出现的,怎么做到?AB语句只是根据我的需求打的一个比方,别跟我说用 select id from m

一个查询的SQL语句请教,希望能够用一条SQL语句得到结果_数据库其它

  各位老大:  我有一个查询的SQL语句请教,希望能够用一条SQL语句得到结果,问题如下:      表X:      A           B           C       D      ------------------      北京   广州   1000     10      北京   深圳   1200     20      北京   上海   500       30      北京   天津   300       40      北京   河南   800   

将ACCESS的数据库转化为SQL SERVER的数据库的几点体验

access|server|数据|数据库 最近忙于将ACCESS的数据库转化为SQL SERVER的数据库的学习,从中摸索出几条经验,与大家分享.1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大.我遇见这种情况