2个回答
展开全部
--如果商品和类别在同一个表
--建表
Create Table T
(
商品 Varchar(10),
类别 Varchar(10),
数量 Int
)
--插入数据
Insert Into T Values('苹果','水果',10)
Insert Into T Values('葡萄','水果',20)
Insert Into T Values('西红柿','蔬菜',30)
--方法一,按商品类别分类求和,加with cube选项
Select ISNULL(商品,'分类-'+类别) As 商品,数量
From (
Select 商品,类别,SUM(数量) As 数量 From T
Group By 商品,类别
With Cube
) S
Where 类别 Is Not Null
--方法二,按商品和类别分别汇总后合拼在一起,然后排序
Select 商品,数量
From (
Select 商品,Max(类别)As 类别,SUM(数量) As 数量 From T
Group By 商品
Union All
Select '分类-'+类别,类别+'Z',SUM(数量) As 数量 From T
Group By 类别
) S
Order By 类别
--如果没有类别,需要先建一个对照表
--建表
Create Table M
(
商品 Varchar(10),
类别 Varchar(10)
)
Create Table N
(
商品 Varchar(10),
数量 Int
)
--插入数据
Insert Into M Values('苹果','水果')
Insert Into M Values('葡萄','水果')
Insert Into M Values('西红柿','蔬菜')
Insert Into N Values('苹果',10)
Insert Into N Values('葡萄',20)
Insert Into N Values('西红柿',30)
Insert Into N Values('苹果',15)
--查询
Select IsNull(商品,'分类-'+类别) As 商品,数量
From (
Select n.商品,类别,SUM(数量) As 数量 From n Left Join m
on m.商品=n.商品
Group By n.商品,类别
With Cube
) s
Where 类别 is not null
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询