sql分类查询并汇总的问题
表:cpxxtb数据库:dcxtdbcpxxtb字段名:订单编号,供应商名称,姓名,菜谱名称,菜谱类别,菜谱单价,日期,数量如何在用sql语句实现分类汇总比如:乡里人家,...
表:cpxxtb 数据库:dcxtdb
cpxxtb 字段名:订单编号,供应商名称,姓名,菜谱名称,菜谱类别,菜谱单价,日期,数量
如何在用sql语句实现分类汇总
比如:
乡里人家,小毛,鱼香肉丝,盖浇饭,8元,1份
乡里人家,小红,鱼香肉丝,盖浇饭,8元,1份
乡里人家,小毛,红烧鱼块,套餐饭,18元,1份
好滋味 ,小毛,鱼香肉丝,盖浇饭,8元,1份
想在datagrid控件实现:
乡里人家,小毛,鱼香肉丝,盖浇饭,16元,2份
乡里人家,小毛,红烧鱼块,套餐饭,18元,1份
供应商:乡里人家 合计:34元,总份数:3份
好滋味 ,小毛,鱼香肉丝,盖浇饭,8元,1份
供应商:好滋味 合计:8元,总份数:1份
总合计:42元 ,份数合计:4份
请教高手如何用sql语句实现,
vb语言
select 供应商名称,sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称 这个只能查询到汇总数据,没有详细分类汇总,我还想看到他点什么类型的,什么菜名,有几个订了这个,然后总价多少 展开
cpxxtb 字段名:订单编号,供应商名称,姓名,菜谱名称,菜谱类别,菜谱单价,日期,数量
如何在用sql语句实现分类汇总
比如:
乡里人家,小毛,鱼香肉丝,盖浇饭,8元,1份
乡里人家,小红,鱼香肉丝,盖浇饭,8元,1份
乡里人家,小毛,红烧鱼块,套餐饭,18元,1份
好滋味 ,小毛,鱼香肉丝,盖浇饭,8元,1份
想在datagrid控件实现:
乡里人家,小毛,鱼香肉丝,盖浇饭,16元,2份
乡里人家,小毛,红烧鱼块,套餐饭,18元,1份
供应商:乡里人家 合计:34元,总份数:3份
好滋味 ,小毛,鱼香肉丝,盖浇饭,8元,1份
供应商:好滋味 合计:8元,总份数:1份
总合计:42元 ,份数合计:4份
请教高手如何用sql语句实现,
vb语言
select 供应商名称,sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称 这个只能查询到汇总数据,没有详细分类汇总,我还想看到他点什么类型的,什么菜名,有几个订了这个,然后总价多少 展开
展开全部
明白了
第一个分类
select 供应商名称,count(姓名),菜谱名称,菜谱类别,sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称,菜谱名称,菜谱类别
第二个分类
如果是要根据供应商统计,可以写成:
select 供应商名称,count(姓名),sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称
最后最总合计:
select sum(菜谱单价),sum(数量) from cpxxtb
OVER
第一个分类
select 供应商名称,count(姓名),菜谱名称,菜谱类别,sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称,菜谱名称,菜谱类别
第二个分类
如果是要根据供应商统计,可以写成:
select 供应商名称,count(姓名),sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称
最后最总合计:
select sum(菜谱单价),sum(数量) from cpxxtb
OVER
展开全部
--生成测试数据
CREATE TABLE #T
(
供应商名称 VARCHAR(400),
姓名 VARCHAR(100),
菜谱名称 VARCHAR(100),
菜谱类别 VARCHAR(100),
菜谱单价 money,
日期 SMALLDATETIME,
数量 int
)
INSERT INTO #T
SELECT '乡里人家','小毛','鱼香肉丝','盖浇饭',8,GETDATE(),1
UNION ALL SELECT '乡里人家','小红','鱼香肉丝','盖浇饭',8,GETDATE(),1
UNION ALL SELECT '乡里人家','小毛','红烧鱼块','套餐饭',18,GETDATE(),1
UNION ALL SELECT '好滋味' ,'小毛','鱼香肉丝','盖浇饭',8,GETDATE(),1
--使用分级汇总
SELECT 菜谱名称,菜谱类别,总菜谱单价=SUM(菜谱单价),总数量=SUM(数量)
FROM #T
GROUP BY 菜谱名称,菜谱类别 WITH ROLLUP
--LZ要统计的数据我弄了下弄不出,ROLLUP我用的极少,
--SQL里可以用 ROLLUP关键字实现分级汇总,希望对你有帮助。
CREATE TABLE #T
(
供应商名称 VARCHAR(400),
姓名 VARCHAR(100),
菜谱名称 VARCHAR(100),
菜谱类别 VARCHAR(100),
菜谱单价 money,
日期 SMALLDATETIME,
数量 int
)
INSERT INTO #T
SELECT '乡里人家','小毛','鱼香肉丝','盖浇饭',8,GETDATE(),1
UNION ALL SELECT '乡里人家','小红','鱼香肉丝','盖浇饭',8,GETDATE(),1
UNION ALL SELECT '乡里人家','小毛','红烧鱼块','套餐饭',18,GETDATE(),1
UNION ALL SELECT '好滋味' ,'小毛','鱼香肉丝','盖浇饭',8,GETDATE(),1
--使用分级汇总
SELECT 菜谱名称,菜谱类别,总菜谱单价=SUM(菜谱单价),总数量=SUM(数量)
FROM #T
GROUP BY 菜谱名称,菜谱类别 WITH ROLLUP
--LZ要统计的数据我弄了下弄不出,ROLLUP我用的极少,
--SQL里可以用 ROLLUP关键字实现分级汇总,希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select 供应商名称,菜谱名称,菜谱类别,SUM(菜谱单价) AS 金额,SUM(数量) AS 数量 from cpxxtb group by 供应商名称,菜谱名称
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
醉含笑的很牛,不过sum(pay)有点需要改动
最终完美版:
select
min(id)
as
序号,
max(dept)
as
部门,
sum(case
when
zt='01'
or
zt='02'
then
pay
else
0
end)
as
合计,
sum(case
zt
when
01
then
1
else
0
end)
as
个数01状态,
sum(case
zt
when
02
then
1
else
0
end)
as
个数02状态,
count(zt)
as
总数
from
aac
group
by
dept
最终完美版:
select
min(id)
as
序号,
max(dept)
as
部门,
sum(case
when
zt='01'
or
zt='02'
then
pay
else
0
end)
as
合计,
sum(case
zt
when
01
then
1
else
0
end)
as
个数01状态,
sum(case
zt
when
02
then
1
else
0
end)
as
个数02状态,
count(zt)
as
总数
from
aac
group
by
dept
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询