34,590
社区成员
发帖
与我相关
我的任务
分享
create table #t_order(id int identity(1,1),orderid int ,orderdate nchar(8),status nvarchar(50))
create table #t_psger(id int identity(1,1),orderid int ,acny decimal(10,2))
insert into #t_order(orderid,orderdate,status)
select 1,'20080918','未收银' union all
select 2,'20080919','未收银' union all
select 3,'20080920','未收银' union all
select 4,'20080920','已收银'
insert into #t_psger(orderid,acny)
select 1,10 union all
select 2,20 union all
select 3,30 union all
select 3,40 union all
select 4,40
select
a.orderdate,
a.status,
count(a.status) r_count,
sum(b.acny) sum_money
from #t_order a
left outer join #t_psger b on a.orderid = b.orderid
group by a.orderdate,
a.status
drop table #t_order
drop table #t_psger
结果:
20080918 未收银 1 10.00
20080919 未收银 1 20.00
20080920 未收银 2 70.00
20080920 已收银 1 40.00
/*t_order(id,orderid,orderdate,status)
t_psger(id,orderid,acny)
两表orderid列相关联,现在我想按orderdate分组列出不同status的t_psger表中的数量及acny求和
*/
select orderdate, status, cnt=sum(cnt), ancy=sum(ancy)
from t_order a
left join (
select orderid,cnt=count(1),ancy=sum(acny)
from t_psger
group by orderid
) as b on a.order_id=b.order_id
group by orderdate, status
这回假设在t_psger中每个orderid可能存在多行/*t_order(id,orderid,orderdate,status)
t_psger(id,orderid,acny)
两表orderid列相关联,现在我想按orderdate分组列出不同status的t_psger表中的数量及acny求和
*/
select orderdate, status, count(b.orderid), sum(ancy)
from t_order a
left join (
select orderid,ancy=sum(acny)
from t_pager
group by orderid
) as b on a.order_id=b.order_id
group by orderdate, status