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字段呢,那你是怎么查不来的
一年多之前 回复
weiqinshian
weiqinshian 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
一年多之前 回复
enpterexpress
enpterexpress   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 大侠,好像查不出来哦! 创建表的代码我已经贴出来了,能否再帮我看看,感激不尽……
一年多之前 回复
qq_27556567
qq_27556567   2016.04.22 16:32

你这种设计不是很科学

weiqinshian
weiqinshian 大侠,你觉得那里不科学?应该怎么设计? 求指教,感激不尽……
一年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!