2 weiqinshian weiqinshian 于 2016.04.22 13:00 提问

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片装')

7个回答

CSDNXIAOD
CSDNXIAOD   2016.04.22 13:12

SQL分组查询,子查询
sql分组查询问题
sql分组查询
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

xiaochaolovedan
xiaochaolovedan   2016.04.22 13:14

试试这个语句可以吗
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(+);

xiaochaolovedan
xiaochaolovedan 你咋没有specification2字段呢,那你是怎么查不来的
2 年多之前 回复
weiqinshian
weiqinshian 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
2 年多之前 回复
enpterexpress
enpterexpress   Rxr 2016.04.22 13:40
u014632175
u014632175   2016.04.22 15:39

你这个药品规格最多只可能两种吗?还是说不确定可能很多种?这个是把竖表变成横表,如果确认药品规格只有两种的话可以这么写,考虑到规格不只是
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;

weiqinshian
weiqinshian 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
2 年多之前 回复
qq_27556567
qq_27556567   2016.04.22 16:32

你这种设计不是很科学

weiqinshian
weiqinshian 大侠,你觉得那里不科学?应该怎么设计? 求指教,感激不尽……
2 年多之前 回复
zz08083315
zz08083315   2016.04.23 20:47

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;

xiaokCSDN
xiaokCSDN   2016.07.30 12:16

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SQL分组查询,子查询
1: 分组函数/又称聚集函数1.分组函数(默认情况下就是ALL)AVG (DISTINCT |ALL| n) COUNT (DISTINCT |ALL| expr | *) // NULL不计算,但对数字0计算 MAX (DISTINCT |ALL| expr) MIN (DISTINCT |ALL| expr) SUM (DISTINCT |ALL| n) 2: 分组函数与分组查询
SQL语句聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计算列的最小值 首先,创建数据表如下: 执行列、行计数(count): 标准格式 SELECT COUNT(计数规范>) FROM
SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
原文 :http://www.cnblogs.com/ghost-xyx/p/3811036.html?utm_source=tuicool&utm_medium=referral 拖了一个星期,终于开始写第三篇了。走起!   聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值
oracle的一些sql查询例子,(子查询、分组查询、求和、求平均数等等)都囊括到了。(1)
其实写博客的这个想法我有了很久了,但一直觉得自己文采不行,怕是不能将一些问题讲述清楚。后来想到写了也不一定就有人看得到,权且就当做是自己的一个笔记吧。 今天要发布的是一个oracle的sql查询例子,里面的sql语句都是博主自己写的,虽然可能不是最好的答案,但也都能查询成功。这个例子也如标题所讲的把sql的一些分组查询、子查询等等都运用上了。我们就废话不多说,看例子吧。 因为博主用到
hibernate系列十六:分组查询,子查询,原生sql查询,命名查询
一  分组查询 HQL查询语句使用groupby子句进行分组查询,使用having子句筛选分组结果。下面通过示例说明。 案例1.  按性别分组,查询学生的平均年龄 package com.obtk.test; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Que
数据库实验报告 SQL查询 ,子查询组合
2008数据库实验 1.SQL SEVER 2000的系统工具、使用交互方式建库、建表 2.T—SQL的简单查询、连接查询 3.子查询及组合 4.数据控制、数据导入/导出、数据备份和恢复 实验1 SQL SEVER 2000的系统工具、使用交互方式建库、建表实验 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理器和查询分析器创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束条件的操作。 实验内容和步骤: (1)熟悉SQL SEVER 2000的界面和操作。 (3)熟悉企业管理器和查询分析器的界面和操作。 (3)创建数据库和查看数据库属性。 (4)创建表、确定表的主码和约束条件。 (5)查看和修改表的结构。 (6)向数据库输入数据,观察违反列级约束时出现的情况。 (7)修改数据。 (8)删除数据,观察违反表级约束时出现的情况。 实验2 T—SQL的简单查询、连接查询 实验目的和要求:,了解SQL语句的数据定义与数据更新功能,了解SQL语句的查询功能,掌握SQL中的数据定义语句的用法,熟练掌握SQL中的插入、修改和删除语句的操作,熟练掌握使用SQL语句进行数据库的简单查询、连接查询。 实验内容和步骤: (1)在SQL SEVER 2000的查询分析器里,用SQL语句建库、建表并插入记录。 (2)修改表结构,包括修改属性列的数据类型,增加新的属性列,删除已有的属性列。 (3)使用单个元组和多元组插入。 (4)简单查询操作,包括投影、选择、数据排序、模糊匹配查询等。如果结果不正确,要进行修改,直至正确为止。 (5)连接查询操作,包括等值连接、自然连接、一般连接、自身连接、外连接。 实验3 子查询及组合 实验目的和要求:了解SQL语句的查询功能,理解视图的概念。熟练掌握使用SQL语句进行数据库的嵌套查询及组合查询的操作;掌握视图创建语句和视图的使用方法,加深对视图作用的理解。 实验内容和步骤: (1)在DBMS的交互式环境里,用SQL语句建库、建表并插入记录。 (2)使用In、比较符和Exists操作符进行嵌套查询操作。 (3)分组查询,包括分组条件表达、选择组条件表达的方法。 (4)集合查询。 (5)使用视图创建语句建视图,通过视图查询数据 (6)带子查询的修改和删除 (7)通过视图修改和删除数据 实验4 数据控制、数据的导入/导出、数据库备份和恢复 实验目的和要求:掌握数据控制(安全性)的方法,了解SQL SEVER 2000的数据备份和恢复机制,掌握SQL SEVER 2000中数据库备份和恢复的方法。 实验内容和步骤: (1)使用SQL对数据进行安全性控制,包括授权和权利收回。 (2)查看授权和权利收回后的结果 (3)SQL SEVER 2000工具对表中的数据导出到其它格式的文件。 (4)将其它格式的文件数据导入到数据库中。 (5)使用SQL SEVER 2000工具创建一个数据库的备份(海量备份、增量备份)。 (6)使用SQL SEVER 2000工具及所创建的数据库备份恢复这个数据库。
用子查询解决分组查询问题
业务需求:在A中需要根据gid字段分组,并只查询到每个分组中最新(时间createDate)的数据。 1.先说说分组查询的局限,group by查询时只能查聚合函数和被分组的列,那么想要的数据很可能查不到。 2.用子查询解决 select * from A a1.createDate = (select MAX(a2.createDate) from A a2 where a2.g
oracle学习分组查询子查询
oracle学习总结 group by 与order by运用 having运用与where区别 ------------------------------------------------------------------------- group by 和 having子句  group by用于对查询的结果分组统计,  having子句用于限制分组显示结果。  问题:如何
Oracle数据库之——分组查询,子查询及添加,更新,删除
分组查询写的顺序:select...from...where... group by...having...order by...执行顺序:from...where...group by.... having ... select ...order by ....实例练习:-- existes : 用它来找寻满足一个条件的信息 -- 找寻多表中存在关联关系或不存在关联关系的数据 --查询部门当中没
MySQL——查询sql总结:简单查询、连接查询、子查询
简介 在SQL语句中,数据查询语句SELECT是使用频率最高、用途最广的语句。它由许多子句组成,通过这些子句可以完成选择、投影和连接等各种运算功能,得到用户所需的最终数据结果。其中,选择运算是使用SELECT语句的WHERE子句来完成的。投影运算是通过在SELECT子句中指定列名来完成的。 连接运算则表示把两个或两个以上的表中的数据连接起来,形成一个结果集合。由于设计数据库时的关系规范化和数据