sql合并重复的字段

这是从数据库查出来显示的表:订单号姓名产品型号数量合计商品单价商品金额配送方式配送金额金额合计20121109182559邓01产品A14848韵达快递126020121... 这是从数据库查出来显示的表:

订单号 姓名 产品型号 数量合计 商品单价 商品金额 配送方式 配送金额 金额合计
20121109182559 邓01 产品A 1 48 48 韵达快递 12 60
20121109182559 邓01 产品C 1 48 48 韵达快递 12 60
20121110174049 沉沉 产品C 2 48 96 韵达快递 12 108
20121119092224 啊黄啊 产品A 2 48 96 韵达快递 12 108
20121119092224 啊黄啊 产品B 3 48 144 韵达快递 12 156
20121119092224 啊黄啊 产品C 2 48 96 韵达快递 12 108
请问怎么合并成下面这样的表并显示出来:
订单号 姓名 产品A 产品B 产品C 数量合计 商品单价 商品金额 配送方式 配送金额 金额合计
20121109182559 邓01 1 1 2 48 96 韵达快递 12 108
20121110174049 沉沉 2 2 48 96 韵达快递 12 108
20121119092224 啊黄啊 2 3 2 7 48 336 韵达快递 12 348
订单表:

sql="select distinct(goods),username,receipt,usertel,id,productnum,actiondate,address,paid,deliverymethord,state,UserID from Orders "

因为我用的是ACCESS数据库,不是SQL数据库,所以sql的写法行不通,哪位大哥提供下ACCESS的写法啊,很急的,谢谢!
展开
 我来答
随o天
2012-11-24 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2031万
展开全部

先说一下你的结果集中“配送金额”应该是每个顾客的合计,每笔12,邓01=24、沉沉=12、啊黄啊=36。

下面是用Oracle SQL语句,你把decode函数改成iif就可以了。

select 订单号,姓名,

       sum(decode(型号,'产品A',数量合计)) 产品A,

       sum(decode(型号,'产品B',数量合计)) 产品B,

       sum(decode(型号,'产品C',数量合计)) 产品C,

       sum(数量合计) 数量合计,商品单价,sum(商品金额) 商品金额,

       配送方式,sum(配送金额) 配送金额,sum(金额合计) 金额合计

 from TAB t group by 订单号,姓名,商品单价,配送方式 order by 订单号;

其中:order by 订单号 是排序输出,不需要可以删掉。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者zUzVB1Sl31
2012-11-23 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部
一句话搞定,这只是一个简单的交叉查询问题:
1. 方法1: ACCESS有向导的,在查询视图里找到上面[插入]菜单,选择交叉查询,交叉查询要求,必须有值进行计算,必须有列进行分类,必须有行进行分组,但N个组只能交叉1列数据,所以你就该把
数量 的合计 作为值
产品型号 分组 作为列用来分类
其他字段 分组 作为行用来分组
明白没,如果还没明白就用代码
2. 方法2用代码:(看仔细我的代码怎么写的格式不能错)
TRANSFORM Sum(数目) as 数量合计 Select 订单号, 姓名, 商品单价, 配送方式, 数量合计*单价 as 商品金额, IIF(配送方式=韵达快递,12,0) as 配送金额, 配送金额+商品金额 as 金额合计 From Order Group By 订单号, 姓名, 商品单价, 配送方式, 数量合计*单价, iif(配送方式='韵达快递',12,0), 配送金额+商品金额 PIVOT Order.产品型号;
看懂没,直接复制进去检查一下符号用一下.
交叉查询语句是这么写的:
TransForm 统计函数体 Select 分组行的字段名...字段名 From 表名 Group By 分组的字段名 Pivot 作为列的字段名;
统计函数体就是交叉计算的结果,他叫 值,分组行的字段名,是作为行的,他的作用就是体现每条记录的详细特征,Group By关键字是针对分组汇总的结束语,Pivot是将行转换成列,记住,只能计算一个列,
在SQL中和在ACCESS语句都可以实现,下面这些哥们没试过,不代表没办法实现,在数据库中这种算法很普遍,这叫做交叉查询
追问
试了下还是报错哦,不知道哪个对应哪个了?可以加下我的QQ吗?782569712
追答

配送方式=韵达快递   这里我写错了,要加引号,逗号后要空一格,你的表名是Order吗,

如果还不行你看下面的图:

点插入,找到插入查询,在下面设置你的字段,把分组的作为行标题,要计算的也作为行标题,数量统计的作为值,产品类型作为列标题,注意啊,行标题、列标题都是选择分组

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cup_zhao
2012-11-19
知道答主
回答量:11
采纳率:0%
帮助的人:9.1万
展开全部
编译已通过,可读性不是很高,楼主对应把sql语句中的字段换成你数据表中字段即可

create table dingdan(
no varchar2(32),
name varchar2(32),
type varchar2(32),
num_total varchar2(32),
price varchar2(32),
money varchar2(32),
peisong varchar2(32),
peisongjine varchar2(32),
jineheji varchar2(32)
)
第一步:
select t.no 订单号,t.name 姓名,t.type 订单类型,t.num_total,
sum(num_total)over(partition by no) 数量总计,t.price 单价,sum(price)over(partition by no) 金额,t.peisong 配送方式,t.peisongjine 配送金额
from dingdan t
第二步:
select t1.*,decode(t1.订单类型,'产品A',t1.num_total,null)A数量,decode(t1.订单类型,'产品B',t1.num_total,null)B数量,decode(t1.订单类型,'产品C',t1.num_total,null)C数量
from(select t.no 订单号,t.name 姓名,t.type 订单类型,t.num_total,
sum(num_total)over(partition by no) 数量总计,t.price 单价,sum(price)over(partition by no) 金额,t.peisong 配送方式,t.peisongjine 配送金额
from dingdan t) t1
第三步:
(select t2.订单号,t2.姓名,sum(t2.A数量)A,sum(t2.B数量)B,sum(t2.C数量)C,avg(数量总计)数量总计,t2.单价,t2.配送方式,t2.配送金额
from (select t1.*,decode(t1.订单类型,'产品A',t1.num_total,null)A数量,decode(t1.订单类型,'产品B',t1.num_total,null)B数量,decode(t1.订单类型,'产品C',t1.num_total,null)C数量
from(select t.no 订单号,t.name 姓名,t.type 订单类型,t.num_total,
sum(num_total)over(partition by no) 数量总计,t.price 单价,sum(price)over(partition by no) 金额,t.peisong 配送方式,t.peisongjine 配送金额
from dingdan t) t1) t2 group by t2.订单号,姓名,配送方式,单价,配送金额)
第四步:
select t3.*,单价*数量总计 商品金额,单价*数量总计+配送金额 金额合计 from ((select t2.订单号,t2.姓名,sum(t2.A数量)A,sum(t2.B数量)B,sum(t2.C数量)C,avg(数量总计)数量总计,t2.单价,t2.配送方式,t2.配送金额
from (select t1.*,decode(t1.订单类型,'产品A',t1.num_total,null)A数量,decode(t1.订单类型,'产品B',t1.num_total,null)B数量,decode(t1.订单类型,'产品C',t1.num_total,null)C数量
from(select t.no 订单号,t.name 姓名,t.type 订单类型,t.num_total,
sum(num_total)over(partition by no) 数量总计,t.price 单价,sum(price)over(partition by no) 金额,t.peisong 配送方式,t.peisongjine 配送金额
from dingdan t) t1) t2 group by t2.订单号,姓名,配送方式,单价,配送金额)) t3
追问
我的是ACCESS数据库,不是SQL
追答
额,那完蛋
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
joy0084868
2012-11-23 · TA获得超过2552个赞
知道大有可为答主
回答量:4914
采纳率:54%
帮助的人:1324万
展开全部
ACCESS不是很熟悉 建议导出EXCEL进行统计计算或数据透视
另外 你的金额合计快递费只计算了一次 这样在数据库里应该是不允许的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nice_jing810
2012-11-23 · 超过13用户采纳过TA的回答
知道答主
回答量:151
采纳率:0%
帮助的人:53.2万
展开全部
select distinct 姓名,订单号
from 表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式