求一统计SQL语句

wang520d 2008-09-23 05:49:34
订单表 订单状态:1表示成功 2 表示拒收
订单号 下单人 订单状态 下单时间 总价格 运费
1111 js001 1 2008-9-23 17:40:11 3333 33
2222 js001 2 2008-9-23 17:40:51 22 0



订单产品表
订单号 产品名称 普通价格数量 优惠价格数量
1111 诺基亚 11 1
1111 摩托若啦 2 2
2222 诺基亚 11 1
2222 摩托若啦 2 2


需要结果:
下单人 订单数 订货数(普价数量+优价数量) 订货金额(总价-运费) 成功订单数 成功金额 拒收单数 拒收金额
js001 2 32 3322 1 3300 1 22


...全文
171 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxg22526451 2008-09-24
  • 打赏
  • 举报
回复
select a.*,b.订货数
from
(
select
下单人,
订单数=COUNT(1),
成功订单数=sum(case 订单状态 when 1 then 1 else 0 end),
成功金额=sum(case 订单状态 when 1 then (总价格-运费) end),
拒收单数=sum(case 订单状态 when 2 then 1 else 0 end),
拒收金额=sum(case 订单状态 when 2 then (总价格-运费) end),
订货金额=sum(总价格-运费)
from @订单表 group by 下单人
) a
join
(
select
下单人,
订货数=sum(普通价格数量+优惠价格数量)
from @订单产品表 a join @订单表 b on a.订单号=b.订单号
GROUP BY 下单人
) b
on a.下单人=b.下单人
wdf618 2008-09-24
  • 打赏
  • 举报
回复
把数据取到DataTable中,用C#统计去,干吗非要用SQL语句做这么复杂的事情?~~~!
wxg22526451 2008-09-24
  • 打赏
  • 举报
回复
--> Test Data: @t1
declare @t1 table ([订单号] int,[下单人] varchar(5),[订单状态] int,[下单时间] datetime,[总价格] int,[运费] int)
insert into @t1
select 1111,'js001',1,'2008-9-23 17:40:11',3333,33 union all
select 2222,'js001',2,'2008-9-23 17:40:51',22,0
--> Test Data: @t2
declare @t2 table ([订单号] int,[产品名称] varchar(8),[普通价格数量] int,[优惠价格数量] int)
insert into @t2
select 1111,'诺基亚',11,1 union all
select 1111,'摩托若啦',2,2 union all
select 2222,'诺基亚',11,1 union all
select 2222,'摩托若啦',2,2

--Code
select a.*,b.订货数
from
(
select
下单人,
订单数=COUNT(1),
成功订单数=sum(case 订单状态 when 1 then 1 else 0 end),
成功金额=sum(case 订单状态 when 1 then (总价格-运费) end),
拒收单数=sum(case 订单状态 when 2 then 1 else 0 end),
拒收金额=sum(case 订单状态 when 2 then (总价格-运费) end),
订货金额=sum(总价格-运费)
from @t1 group by 下单人
) a
join
(
select
下单人=(select distinct 下单人 from @t1 where 订单号 in (select distinct 订单号 from @t2 )),
订货数=sum(普通价格数量+优惠价格数量)
from @t2 t
) b
on a.下单人=b.下单人

--Drop

--Result
/*
下单人 订单数 成功订单数 成功金额 拒收单数 拒收金额 订货金额 订货数
----- ----------- ----------- ----------- ----------- ----------- ----------- -----------
js001 2 1 3300 1 22 3322 32
*/
wang520d 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 will_bi 的回复:]
SQL code
select distinct 下单人,(select count(*) from table_1 where 下单人='js001') as 订单数,
(select sum(普通价格数量)+sum(优惠价格数量) from table_2 where 订单号 in (select 订单号 from table_1 where 下单人='js001')) as 订货数,
(select sum(总价格)-sum(运费) from table_1 where 下单人='js001') as 订货金额,
(select count(*) from table_1 where 下单人='js001' and 订单状态=1) as 成功订单数,…
[/Quote]
=========
这样的结果等于没有做。。。如果是您做统计 难道就统计这一个人的吗?
wang520d 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yoursWTR 的回复:]
这个表建的都有问题

一句SQL还没分开写多条SQL来的高效
[/Quote]

请赐教 这表哪里建的有问题了?
yoursWTR 2008-09-23
  • 打赏
  • 举报
回复
这个表建的都有问题

一句SQL还没分开写多条SQL来的高效
king5281273 2008-09-23
  • 打赏
  • 举报
回复
一条sql语句估计很难
will_bi 2008-09-23
  • 打赏
  • 举报
回复

select distinct 下单人,(select count(*) from table_1 where 下单人='js001') as 订单数,
(select sum(普通价格数量)+sum(优惠价格数量) from table_2 where 订单号 in (select 订单号 from table_1 where 下单人='js001')) as 订货数,
(select sum(总价格)-sum(运费) from table_1 where 下单人='js001') as 订货金额,
(select count(*) from table_1 where 下单人='js001' and 订单状态=1) as 成功订单数,
(select sum(总价格)-sum(运费) from table_1 where 下单人='js001' and 订单状态=1) as 成功金额,
(select count(*) from table_1 where 下单人='js001' and 订单状态=2) as 拒收单数,
(select sum(总价格)-sum(运费) from table_1 where 下单人='js001' and 订单状态=2) as 拒收金额
from table_1
bobui 2008-09-23
  • 打赏
  • 举报
回复
up
takako_mu 2008-09-23
  • 打赏
  • 举报
回复
我小學數學學的不好,迷糊!
wang520d 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jelly_lin 的回复:]
订货数是怎么取来的
[/Quote]

订单表中下单人的记录行数
jelly_lin 2008-09-23
  • 打赏
  • 举报
回复
订货数是怎么取来的
wang520d 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jelly_lin 的回复:]
你做假帐的吧。。。
[/Quote]

怎么说呢?
jelly_lin 2008-09-23
  • 打赏
  • 举报
回复
你做假帐的吧。。。
gjfizx 2008-09-23
  • 打赏
  • 举报
回复
mark

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧