sql 联合 问题,

chuting1 2010-12-07 09:12:06
有两个表,都通过某一字段ysxz分类汇总
userinfo :
yhbm(编号) ,ysxz(用水性质)

sellinfo:
yhbm,ysxz,amount,je,date

select ysxz,count(*) from userinfo可以汇总得到各用水性质的用户数

select ysxz,sum(amount),sum(je),count(*) from sellinfo where date between a and b group by ysxz 可以得到某时间段内各用水性质 交易的汇总结果(户数,总量,金额)

能否得到这样结果
ysxz,总户数,交易户数,交易总量,交易金额

不知道怎么写好
...全文
48 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fengyun142415 2010-12-07
都很厉害,学习一下
回复
chuting1 2010-12-07
谢谢各位,得到启发了,一会给分
回复
chuting1 2010-12-07
select ysxz,count(*) cnt from userinfo group by ysxz少了一点
回复
dawugui 2010-12-07
原来是这样?
select isnull(m.ysxz,n.ysxz) ysxz , m.交易总量 ,m.交易金额,m.交易户数, n.总户数 from
(select ysxz,sum(amount) 交易总量,sum(je) 交易金额, count(*) 交易户数 from sellinfo where date between a and b group by ysxz) m
full join
(select ysxz,count(*) 总户数 from userinfo) n
on m.ysxz = n.ysxz
回复
水族杰纶 2010-12-07
select a.ysxz,
a.cnt 总户数,
b.cnt 交易户数,
b.amount 交易总量,
b.je 交易金额
from (select ysxz,count(*) cnt from userinfo) a
left join
(select ysxz,sum(amount),sum(je),count(*)cnt from sellinfo where date between a and b group by ysxz)b
on a.ysxz=b.ysxz
回复
dawugui 2010-12-07
是行列转换吧?
何为交易字段,有个标记字段吧?假设为type=1,大致为如下.
select ysxz,
sum(amount) 交易总量,
sum(case type when 1 then 1 else 0 end) 交易户数
sum(je) 交易金额,
count(*) 总户数
from sellinfo
where date between a and b
group by ysxz


如果上述不对,请:
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
如果有多表,表之间如何关联?


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
回复
水妹妹 2010-12-07
select a.ysxz,总用户 ,户数=isnull(户数,0),总量=isnull(总量,0),金额=isnull(金额,0)
from (
select ysxz,count(*) as 总用户 from userinfo
) a
left join
(
select ysxz,sum(amount) as 户数,sum(je) as 总量,count(*) as 金额 from sellinfo where date between a and b group by ysxz
)b
on a.ysxz=b.ysxz
回复
相关推荐
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2010-12-07 09:12
社区公告
暂无公告