现有表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很难实现,因为本质上sql查询出的结果只能是个固定列数的二维表。
按照需求中的说法,同一种药品,如果规格不同,需要按列分别列出规格,这意味着列的个数是不固定。上面的样例数据中,阿莫西林有6片装和24片装两种规格,规格列是2列,但如果有12片装的呢,规格列是否应该是3列?
如果需求中所说的输出列,只是为了显示用,可以在程序(PHP/JAVA等)中取出所有数据,按照药店、药品名称作为唯一值放到一个集合中,然后循环输出对应的规格列。