sql server :select a.账单编号, sum(case when b.商品类型='烟类' then c.数量 * c.价格 else 0 end) as 烟类, sum(case when b.商品类型='酒类' then c.数量 * c.价格 else 0 end) as 酒类, sum(case when b.商品类型='茶类' then c.数量 * c.价格 else 0 end) as 茶类 from 消费表 c inner join 账单表 a on a.账单编号=c.账单编号 inner join 价格表 b on b.商品名称=c.商品名称 where a.账单编号='20030101001' group by a.账单编号
access: select a.账单编号, sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 烟类, sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 酒类, sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 茶类 from 消费表 c inner join 账单表 a on a.账单编号=c.账单编号 inner join 价格表 b on b.商品名称=c.商品名称 where a.账单编号='20030101001' group by a.账单编号 我用了汉语字段,你应该可以看明白。 复制过来都乱了,你自己再复制到分析器里看吧。 上面写的是固定的,如果类型不固定,那你要先找出所有类型再动态生成查询语句了,不过也不难。
你上面说要单项消费统计,现在又要不同的商品统计在一条记录里。
是不是这样:
单号 商品A 商品B 商品C 商品D ...
001 100 200 100 10
002 30 120 90 50
..
..
在账单表里:
账单编号:[szdbh]:20030101001
结账时间:[djzsj]:2003-01-01 12:14:24
应收款: [nysk]:235
实收款: [nss]:230
在消费表里:
账单编号:[szdbh]:20030101001
商品名称:[spmc]:香烟
数量: [nsl]: 2
价格: [ndj]: 10
账单编号:[szdbh]:20030101001
商品名称:[spmc]:黑烟
数量: [nsl]: 2
价格: [ndj]: 10
账单编号:[szdbh]:20030101001
商品名称:[spmc]:白酒
数量: [nsl]: 2
价格: [ndj]: 100
账单编号:[szdbh]:20030101001
商品名称:[spmc]:红酒
数量: [nsl]: 2
价格: [ndj]: 100
账单编号:[szdbh]:20030101001
商品名称:[spmc]:绿茶
数量: [nsl]: 2
价格: [ndj]: 10
账单编号:[szdbh]:20030101001
商品名称:[spmc]:红茶
数量: [nsl]: 1
价格: [ndj]: 5价格表里是:
商品名称:[spmc]:香烟
商品类型:[spxl]:烟类
商品名称:[spmc]:黑烟
商品类型:[spxl]:烟类
商品名称:[spmc]:红酒
商品类型:[spxl]:酒类
商品名称:[spmc]:白酒
商品类型:[spxl]:酒类
商品名称:[spmc]:绿茶
商品类型:[spxl]:茶类
商品名称:[spmc]:红茶
商品类型:[spxl]:茶类得到的结果应该是:
账单编号 烟类消费 茶类消费 酒类消费
20030101001 20 15 200这样应该很了解了吧??
sum(case when b.商品类型='酒类' then c.数量 * c.价格 else 0 end) as 酒类,
sum(case when b.商品类型='茶类' then c.数量 * c.价格 else 0 end) as 茶类
from 消费表 c inner join 账单表 a on a.账单编号=c.账单编号
inner join 价格表 b on b.商品名称=c.商品名称
where a.账单编号='20030101001'
group by a.账单编号
select a.账单编号, sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 烟类,
sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 酒类,
sum(iif(b.商品类型='烟类', c.数量 * c.价格,0)) as 茶类
from 消费表 c inner join 账单表 a on a.账单编号=c.账单编号
inner join 价格表 b on b.商品名称=c.商品名称
where a.账单编号='20030101001'
group by a.账单编号
我用了汉语字段,你应该可以看明白。
复制过来都乱了,你自己再复制到分析器里看吧。
上面写的是固定的,如果类型不固定,那你要先找出所有类型再动态生成查询语句了,不过也不难。