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,总户数,交易户数,交易总量,交易金额

不知道怎么写好
...全文
125 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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