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 供应商名称 这个只能查询到汇总数据,没有详细分类汇总,我还想看到他点什么类型的,什么菜名,有几个订了这个,然后总价多少

明白了

第一个分类
select 供应商名称,count(姓名),菜谱名称,菜谱类别,sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称,菜谱名称,菜谱类别

第二个分类
如果是要根据供应商统计,可以写成:

select 供应商名称,count(姓名),sum(菜谱单价),sum(数量) from cpxxtb group by 供应商名称

最后最总合计:
select sum(菜谱单价),sum(数量) from cpxxtb

OVER
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-30
--生成测试数据
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关键字实现分级汇总,希望对你有帮助。
第2个回答  2009-09-30
select 供应商名称,菜谱名称,菜谱类别,SUM(菜谱单价) AS 金额,SUM(数量) AS 数量 from cpxxtb group by 供应商名称,菜谱名称
第3个回答  2020-05-17
醉含笑的很牛,不过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
相似回答