sql查询问题?涉及子查询、分组查询,求大神赐教,感激不尽…… 1C

现有表store ,表中数据如下图所示:

图片说明

如何通过sql语句 查出下面这种结果:
图片说明

字段:id cname(药店) product_name(药品名) specification1(药品规格1) specification2(药品规格2)

请问应该如何写,求大神赐教,感激不尽……

 CREATE TABLE [dbo].[store](
    [id] [int] NOT NULL,
    [cname] [varchar](50) NULL,
    [product_name] [varchar](50) NULL,
    [specification1] [varchar](50) NULL
) ON [PRIMARY]

INSERT [dbo].[store] ([id], [cname], [product_name], [specification1]) VALUES (1, N'a药店', N'阿莫西林', N'6片装')
INSERT [dbo].[store] ([id], [cname], [product_name], [specification1]) VALUES (2, N'a药店', N'阿莫西林', N'16片装')
INSERT [dbo].[store] ([id], [cname], [product_name], [specification1]) VALUES (3, N'b药店', N'阿莫西林', N'6片装')
sql
0

6个回答

试试这个语句可以吗
select s.id,s.cname,s.product_name,s.specification1,s.specifiaction2 from store s,store t where s.canme=t.cname(+) and s.specifiaction1 =t.specification1(+);

0
xiaochaolovedan
程序猿的人生 你咋没有specification2字段呢,那你是怎么查不来的
大约 3 年之前 回复
weiqinshian
weiqinshian 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
大约 3 年之前 回复
0

你这个药品规格最多只可能两种吗?还是说不确定可能很多种?这个是把竖表变成横表,如果确认药品规格只有两种的话可以这么写,考虑到规格不只是
6片装或者24片装,
select a.cname,a.product_name,a.specification1,b.specification1 specification2 from (select cname,product_name,min(specification1) from store group by cname,prodcut_name)a,
(select cname,product_name,max(specification1) from store group by cname,product_name) b where a.cname=b.cname and a.product_name=b.product_name;

0
weiqinshian
weiqinshian 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
大约 3 年之前 回复

你这种设计不是很科学

0
weiqinshian
weiqinshian 大侠,你觉得那里不科学?应该怎么设计? 求指教,感激不尽……
大约 3 年之前 回复

select cname,product_name,
sum(case when specification1='6片装' then specification1 end) as specification1,
sum(case when specification1='16片装' then specification1 end) as specification2
from store
group by cname,product_name;

0

哈哈,Oracle中可以行列转换。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL——分组函数、distinct、分组查询、连接查询、子查询
博客目录nnnn1、分组函数nnnn2、distinctnnnn3、分组查询(group by、having)nnnn4、一个完整的DQL语句的总结nnnn5、连接查询(跨表查询)(关联多个表查询)nnnn6、子查询nnnnnn一、分组函数nnnn1、 会自动忽略空值nnnn2、 分组函数不能直接使用在where关键字后面nnn取平均值:avgnnmysql> select avg(sal)...
Oracle 学习日记:分组查询,子查询,复杂查询
今天依旧学习了Oracle的查询操作,内容是分组查询,子查询,复杂查询,下面将今天的部分代码贴到下边 n–在where子句中使用子查询 nselect sal nfrom emp nwhere job = ‘MANAGER’;nnselect * from emp nwhere sal in ( nselect sal from emp where job = ‘MANAGER’); n–注...
SQL分组查询,子查询
1: 分组函数/又称聚集函数1.分组函数(默认情况下就是ALL)AVG (DISTINCT |ALL| n)nCOUNT (DISTINCT |ALL| expr | *) // NULL不计算,但对数字0计算nMAX (DISTINCT |ALL| expr)nMIN (DISTINCT |ALL| expr)nSUM (DISTINCT |ALL| n)n2: 分组函数与分组查询
oracle的一些sql查询例子,(子查询、分组查询、求和、求平均数等等)都囊括到了。(1)
其实写博客的这个想法我有了很久了,但一直觉得自己文采不行,怕是不能将一些问题讲述清楚。后来想到写了也不一定就有人看得到,权且就当做是自己的一个笔记吧。n 今天要发布的是一个oracle的sql查询例子,里面的sql语句都是博主自己写的,虽然可能不是最好的答案,但也都能查询成功。这个例子也如标题所讲的把sql的一些分组查询、子查询等等都运用上了。我们就废话不多说,看例子吧。n 因为博主用到
用子查询解决分组查询问题
业务需求:在A中需要根据gid字段分组,并只查询到每个分组中最新(时间createDate)的数据。n1.先说说分组查询的局限,group by查询时只能查聚合函数和被分组的列,那么想要的数据很可能查不到。n2.用子查询解决nselect * from A a1.createDate = n (select MAX(a2.createDate) from A a2 where a2.g
sql 分组查询和子查询语句
select t.*,t.rowid from repaymentfrz t where t.batchno in (select t.batchno from repaymentfrz t   where t.batchno IS NOT NULL  group by batchno);
子查询和分组查询
一、子查询nn什么是子查询?nn一个查询语句里面嵌套一个查询。外层的叫做符查询,内层里面嵌套的叫做子查询。nn语法:nnnselect ....... from 表名 where 字段 比较运算符 (子查询);nn#其中,在查询过程中,先执行子查询部分,求出子查询部分的值,再执行整个父查询,返回最后的结果。nnn nn注意:将子查询和比较运算符联合使用时,必须保证子查询返回的值只有一个,否则比较...
SQL语句聚合函数、分组、子查询及组合查询
聚合函数:rnrnSQL中提供的聚合函数可以用来统计、求和、求最值等等。rnrn分类:rnrn–COUNT:统计行数量rn–SUM:获取单个列的合计值rn–AVG:计算某个列的平均值rn–MAX:计算列的最大值rn–MIN:计算列的最小值rnrnrn首先,创建数据表如下:rnrnrnrnrnrn执行列、行计数(count):rnrn标准格式rnrnSELECT COUNT(计数规范>) FROM
SQL分组统计查询
分组统计查询rn2017年11月13日rn20:36rn统计函数rnrn统计个数:COUNT(* | [DISTINCT]字段)rn--COUNT(*):明确地返回表中的数据个数,是最准确的。rn--COUNT(字段):不统计为null的数据个数。rn--COUNT([DISTINCT]字段):统计消除重复数据后的数据个数。rnrnMAX(字段)、MIN(字段)rnSUM(字段)、AVG(字段)r
(四)MySQL基础——分组查询、连接查询、子查询
分组查询nnGROUP BY语法:nn  SELECT  分组函数  ,列(要求出现在GROUP BY的后面)FROM  表  【WHERE  筛选条件】GROUP BY  分组的列表nn【ORDER  BY  子句】nn注意:nn查询列表比较特殊,要求是分组函数和GROUP BY 后出现的字段nn分类:nn分组查询中的筛选条件分为两类:分组前筛选 和 分组后筛选。两类筛选的数据源是不一样的,前者...
sql:分组统计时的查询及效率
一张user表 里面有id、国籍、出生日期等字段rn现在要统计各个国家成年的人有多少、未成年的人有多少rn结果如下图所示 rnrnrn第一种写法:rnSELECT rn  gjname,rn(select count(0) from criminal_base_info where gjname=baseInfo.gjname and TRUNC(months_between(sysdate,cs
oracle学习分组查询子查询
oracle学习总结rngroup by 与order by运用rnhaving运用与where区别rn-------------------------------------------------------------------------rngroup by 和 having子句 rngroup by用于对查询的结果分组统计, rnhaving子句用于限制分组显示结果。 rn问题:如何
mysql 分组查询取各分组的前两名及子查询性能优化
背景:由于项目运营需要提供各个球员(playerId)跑动距离(distance)最长的前两场比赛数据记录:数据存在mongojg表中下面看第一版sql:1.一开始不知道怎么取跑动最好的前两场数据所以通过取表现最好的比赛然后通过id从结果集排除再对剩下的比赛取最好表现,最后将两次结果合并的到球员表现最好的两场比赛(不多说都是泪)...SELECT e.ids,n e.matchId,n e.pla...
oracle 分组查询 子查询
分组查询rnrnrnrn例:rn统计平均工资大于2000的部门信息rn-- 1.确定要查询的字段及表rnselect e.sal,d.deptno, d.dname, d.loc from emp e,dept d where e.deptno= d.deptnorn-- 2.统计平均工资及部门信息rnselect avg(e.sal),d.deptno, d.dname, d.loc from
mysql 高效分组查询取最大值
nSELECT *  from ( nSELECT MAX(ID) as id FROM t_n_repayment_detail GROUP BY PLAN_ID )t nINNER JOIN t_n_repayment_detail d on t.ID= d.id ;n 
Oracle数据库——多表查询,分组查询,子查询
目录nn多表查询 nn表的连接nn1999语法nn分组查询nnOracle执行语句及顺序nnWHERE和HAVING的区别:nnUNION和UNION ALL的区别:nn子查询nnSELECT子句nnFROM子句nnWHERE子句(用到最多)nnHAVING子句nn多表查询 nnFROMnn性能不好,海量的大数据不建议使用nn多表查询:在FROM子句后面设置多张数据表nn笛卡尔积:会将两张表相乘n...
mysql子查询,分组拼接GROUP_CONCAT函数
 nnsql语句nnnselect af.id id,af.aftersaleapplication_id aftersaleapplicationId,n af.time time,af.sysuser_id sysuserId,af.status status,af.description description,n af.last_type lastType,GROUP_CONCAT(w...
hive:条件查询、join关联查询、分组聚合、子查询
hive查询语法nnn提示:在做小数据量查询测试时,可以让hive将mrjob提交给本地运行器运行,可以在hive会话中设置如下参数:nnhive> set hive.exec.mode.local.auto=true;nnn nn基本查询示例nnnselect * from t_access;nnselect count(*) from t_access;nnselect max(ip) ...
MySQL之聚合查询、子查询、合并查询、正则表达式查询详解
一:聚合查询nn1:MySQL之聚合函数nnnn基本表orderitems表结构如下:nnnn2:count()函数nn2.1:count()函数用来统计记录的条数nn2.2:与group by 关键字一起使用nnSQL语句如下:nnnn查询的结果如下:nnnnnn3:sum()函数nn3.1:sum()函数是求和函数nn3.2:与group by关键字一起使用nnSQL语句如下:nnnn查询的结...
连接查询和分组查询
《升序》ASC  《降序》DESCnrelationshipnnn*** 分组查询:n** 使用 group by 进行分组查询nn语句:《有列名:StudentID,CourseID,Scores》nselect CourseID,avg(S cores) as 课程平均成绩 from Score group by CourseIDnnnn例 1:查询男女学生的人数各是多
sql语句_自连接_外连接_左连接_子查询_排序_分组
数据库 nsql语句 n分为DDL,DCL,DLL n 1),DDL,data define language: 新建一个数据库 n ceate创建 alter修改 drop删 n 这三条语句,在下面几个组件中,都可以用得到 n 数据库分为下面几个组件 n a,数据库,datab
数据库中经常分组查询的表如何做性能优化(group by)
一、原sqlnSELECT U.NAME        AS NAME,n       U.ACCOUNT,n       U.REGION_NAME,n       U.ORG_NAME,n       L.LOGIN_TIME  AS Mn  FROM PUB_USER U,n       (SELECT t.CREATOR, MAX(t.LOGIN_TIME) LOGIN_TI
SQL Server 2005 精华版
SQL Server 2005 查询 涉及-- 排名,分析函数,子查询,分页查询,引入变量,引入临时表和聚集索引,分组查询,查询结果分组,根据查询结果分组设置名称,递归查询,查找员工等等
Sql多张表的子查询
n在日常开发中,我们会遇到取多张表的数据,但是几张便只是两两关联的话,这样单独的连接查询就满足不了需求,这个是就需要通过子查询来获得需要的数据,下面给出一个简单的demo:nnnnnSELECT top 1 t4.end_time ,t1t2t3.* from crm_wy_fee_init t4 right JOINn (SELECT t3.name,t1t2.* from crm...
Oracle数据库之——分组查询,子查询及添加,更新,删除
分组查询写的顺序:select...from...where...ngroup by...having...ordernby...执行顺序:from...where...group by....nhaving ... select ...order by ....实例练习:-- existes : 用它来找寻满足一个条件的信息n-- 找寻多表中存在关联关系或不存在关联关系的数据n--查询部门当中没
如何查找每个分组的前三条记录
在此之前,我们首先要了解一下几个常用的命令和区别nnnhaving与wheren区别在于执行时机不同,where是在检索开始时从数据源中获取,having是从分组后的数据结果中获取。n所以,重点在于having所筛选的数据一定是在where删选之后!n这个having说白了就是为了配合统计函数使用的nnnexist的总结n这个子查询的目的不在于为了产生结果集,只是用来判断某个子查询是否查询到了数据...
MySql多表查询分组查询,子查,分页查询
一.多表查询nn 查询每个雇员的编号,姓名,职位,工资,部门名称,部门位置。nnnSELECT e.empno,e.ename,e.job,e.sal,d.dname,d.locnFROM emp e,dept dnWHERE e.deptno=d.deptno;nnnn1.全连接nn 查询每个雇员的编号,姓名,职位,工资,部门名称,部门位置。nnnSELECT e.empno,e.ename,e...
分组查询最大/最小值sql
经典题目:查询每个班级的最高分,查询每种日志的最晚记录 n1.查询每个班级的最高分(不考虑同一分数的) n nSQL语句: nSELECT id,name,calssid,MAX(score) FROM n(SELECT * FROM t_zhb ORDER BY score desc) A nGROUP BY calssid; n查询结果: n必须要有子查询,子查询先要排序,如果取最大,倒序排,
mysql 分组查询
数据结构如下: CREATE TABLE `wz` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `province` varchar(8) NOT NULL DEFAULT '',  `city` varchar(32) NOT NULL DEFAULT '',  `hphm` varchar(8) NOT NULL DEFAULT '',...
ORACLE_高级查询(1)_组函数_分组查询_子查询_Unit_3;
Topic 1 : 组函数nnnSQL> --组函数操作多行返回一行,又称多行函数;nSQL> -- count(*) 求总行数nSQL> select count(*) from emp;nn COUNT(*)n----------n 14nnSQL> --也可以查找单独的一列有多少行nSQL> --因为select后面跟的就是列数nSQL> ...
连接查询及分组查询强化练习
-- 求每个雇员的姓名,工资,工资等级nselect * from salgrade;nselect a.ename, a.sal, b.grade from emp a, salgrade bnwhere a.sal between b.losal and b.hisal;n-- 求每个员工的姓名,部门名,部门号nselect a.ename, b.dname, b.deptno from em
sql 嵌套查询,并通过分组 和字段连接函数GROUP_CONCAT 查询出符合业务的结果集
开发做了好几年但sql 一直很弱,复杂的sql 没怎么写过。其实是因为不会写。故事是这样的,一个业务逻辑 比较复杂,用Java处理三四十行代码。而且很蹩脚。领导看了说直接写sql 。。。。特此记录下。。权当笔记了 不喜勿喷rnrn首先说下:rn1:GROUP_CONCAT() 他的作用是   将一对多的变体 ,按照你指定的 规则 整合为一个字段。 参数 SEPARATOR 关键字 用来指定分隔符
mysql的5中查询子句之二group by分组查询
一、group by查询简介作用:把行 按 字段 分组n语法:group by 列1,列2....列Nn适用场合:常用于统计场合,一般和聚合函数连用。n聚合函数(或者叫统计函数):max(最大值),min(最小值),avg(平均值),sum(求和),count(计数)二、举例我这边做实验的数据还是zabbix的数据,这个大家随时都可以在官网上下载1、查出功能id最大的值mysql> select m
Mysql中的数据分组和子查询
Mysql中的数据分组和子查询rn一、数据分组rn1、创建分组rn分组是在SELECT语句的GROUP BY子句中建立的。rn示例:SELECT book_id,COUNT(*) AS book_num FROM book GROUP BY book_idrn上述语句首先根据book_id进行分组,把所有book_id相同的条目放在一起,然后使用COUNT(*)统计每一组的数目。最有进行显示。rn
Hibernate-分组查询、聚合函数
dao/*n * 两列以上就封装成Object数组,一列就List 不能追加投影。不然会覆盖掉。最后一次有效n */n public List testProjection() {n // select avg(sal),max(sal),count(empno) from Emp group by deptn return HibernateSes
mysql 分组查询之后的总条数
SELECTn count(*) FROM 表名 WHERE 条件 //n 这样查出来的是总记录条nn nnSELECTn count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数.nnnnnnnnnn n如何获得 第二个sql语句的总记录条数?nn  则是,如下:   nnnnnnnnn
子查询练习题
重点:作为计算字段使用子查询nselect cust_name,cust_state,(select count(*) from orders where norders.cust_id=customers.cust_id) as orders from customersnorder by cust_name;nnn10、查询所有“CLERK”(办事员)的姓名及其部门名称及部门人数 n· 找出...
sql --- 子查询+分组函数
rmb1SnatchInfoId 是商品ID,n每条记录是每个商品+不同期数period的组合=detailnnnn需求:查询每个商品,期数nnn表结构如下:nnnnn实现的语句:nselect detail.id,detail.period,detail.rmb1SnatchInfoId from web_1rmb_snatch_detail detail njoi
SQL 分组查询
tip:分组之前的条件用where,分组之后的条件用havingnnnngroup bynnn例1:显示不同仓库的仓库号和平均工资nnnnnselect 仓库号,avg(工资) as 仓库平均工资 from 职工 group by 仓库号nnn例2:显示工资大于wh1仓库的平均工资、性别不为空的不同仓库的仓库号和平均工资nnnnnselect 仓库号,avg(工资) as 仓库平均工资 from...
hibernate系列十六:分组查询,子查询,原生sql查询,命名查询
一  分组查询rnrnHQL查询语句使用groupby子句进行分组查询,使用having子句筛选分组结果。下面通过示例说明。rn案例1.  按性别分组,查询学生的平均年龄rnpackage com.obtk.test;nnimport java.util.List;nnimport org.hibernate.HibernateException;nimport org.hibernate.Que
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据涉及课程 java大神班