如何合并对一个表的两个查询结果成一个表

churchatp1 2005-04-20 08:03:32
有表结构如下:
a(a1,a2,a3,a4)
a1可以重复为字符串型,值为'1'..'9',a2,a3为整数型
现做如下查询,1。select sum(a2)+sum(a3) from a where a1<'6' group by a1
2.select sum(a2)-sum(a3) from a where a1>'6' group by a1

谢谢!
...全文
200 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
631799 2005-04-21
  • 打赏
  • 举报
回复
或者:

select 1,sum(cast(a2 as numeric))+sum(cast(a3 as numeric)),a1 from a where a1<'6' group by a1
union all
select 2,sum(cast(a2 as numeric))-sum(cast(a3 as numeric)),a1 from a where a1>'6' group by a1
order by 1
631799 2005-04-21
  • 打赏
  • 举报
回复
select * from(
select top 100 percent sum(cast(a2 as numeric))+sum(cast(a3 as numeric)) from a where a1<'6' group by a1 order by 字段1) a
union all
select * from(
select top 100 percent sum(cast(a2 as numeric))-sum(cast(a3 as numeric)) from a where a1>'6' group by a1 order by 字段2) b
churchatp1 2005-04-21
  • 打赏
  • 举报
回复
不好意思,是我自己弄错了,日期赋值错误,所以没有结果
paoluo 2005-04-20
  • 打赏
  • 举报
回复
晕,怎么会不行??不行指什么??得不到值还是查询不出来??
churchatp1 2005-04-20
  • 打赏
  • 举报
回复
我刚开始就是这么做的,好象不行
paoluo 2005-04-20
  • 打赏
  • 举报
回复
那为你那一列取一个别名,如下面的SUMa。

select (sum(cast(a2 as numeric))+sum(cast(a3 as numeric))) As SUMa,a1 from a where a1<'6' group by a1
union all
select (sum(cast(a2 as numeric))-sum(cast(a3 as numeric))) As SUMa,a1 from a where a1>'6' group by a1
order by a1

现在应该知道怎么取了吧。
churchatp1 2005-04-20
  • 打赏
  • 举报
回复
我要取这个合成表的sum(cast(a2 as numeric))-sum(cast(a3 as numeric))字段,改怎么办?
paoluo 2005-04-20
  • 打赏
  • 举报
回复
取它的字段??哪个??
churchatp1 2005-04-20
  • 打赏
  • 举报
回复
这样的话我要去取他的字段怎么取啊?谢谢
paoluo 2005-04-20
  • 打赏
  • 举报
回复
试试

select sum(cast(a2 as numeric))+sum(cast(a3 as numeric)),a1 from a where a1<'6' group by a1
union all
select sum(cast(a2 as numeric))-sum(cast(a3 as numeric)),a1 from a where a1>'6' group by a1
order by a1
churchatp1 2005-04-20
  • 打赏
  • 举报
回复
错了,我是这样写的:
我也是用union的,select * from (select sum(cast(a2 as numeric))+sum(cast(a3 as numeric)),a1 from a where a1<'6' group by a1
union all
select sum(cast(a2 as numeric))-sum(cast(a3 as numeric)),a1 from a where a1>'6' group by a1
)as m order by a1
提示出错
oeder by不可少该怎么写,谢谢
churchatp1 2005-04-20
  • 打赏
  • 举报
回复

我也是用union的,select * from (select sum(cast(a2 as numeric))+sum(cast(a3 as numeric)),a4 from a where a1<'6' group by a1
union all
select sum(cast(a2 as numeric))-sum(cast(a3 as numeric)),a4 from a where a1>'6' group by a1
)as m order by a4
提示出错
churchatp1 2005-04-20
  • 打赏
  • 举报
回复
to 新新人类:
不行啊,连接起来就不能用order by了,我还要用order by
chiwei 2005-04-20
  • 打赏
  • 举报
回复
select
A=(select sum(a2)+sum(a3) from a where a1<'6' group by a1),
B=(select sum(a2)-sum(a3) from a where a1>'6' group by a1)
Andy__Huang 2005-04-20
  • 打赏
  • 举报
回复
select sum(cast(a2 as numeric))+sum(cast(a3 as numeric)) from a where a1<'6' group by a1
union all
select sum(cast(a2 as numeric))-sum(cast(a3 as numeric)) from a where a1>'6' group by a1

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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