多表查询问题,大家再帮忙看看

congenze 2014-06-06 11:09:00
查询的时候又遇到了一个问题,大家帮看看怎么写语句,谢谢啦!
表1 一级部门表:存了一级部门名称,其中字段
表2 部门表:存了所有二级部门,其中字段有
表3 实际收入表:其中字段有
我现在想在实际收入表中查出所有属于同一个一级部门的预算收入项目金额,要按照部门表中的部门代码从小到大排序,不知道这个该怎么查询呢?
SELECT 部门名, SUM(实际收入金额)
FROM 实际收入表
WHERE (部门名 IN
(SELECT 部门名称
FROM 部门表
WHERE 所属一级部门 ='部门')) AND (预算收入项目 ='项目')
GROUP BY 部门名
这样不能按照部门代码的大小排序,大神帮着看看,这种稍微复杂点的我就不知道该怎么写语句了!谢谢大家!
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
congenze 2014-06-06
  • 打赏
  • 举报
回复
引用 8 楼 fredrickhu 的回复:
SELECT a.部门名称, a.部门代码 AS 代码, SUM(c.实际收入金额) AS 收入
 FROM 部门表 a INNER JOIN
       一级部门表 b ON a.所属一级部门 = b.一级部门名称 INNER JOIN
       实际收入表 c ON a.部门名称 = c.部门名
 WHERE (b.一级部门名称 = '一级') and c.部门名<>'1号部门'
 GROUP BY a.部门名称, a.部门代码
 ORDER BY a.部门代码
谢谢!非常感谢!
--小F-- 2014-06-06
  • 打赏
  • 举报
回复
SELECT a.部门名称, a.部门代码 AS 代码, SUM(c.实际收入金额) AS 收入
 FROM 部门表 a INNER JOIN
       一级部门表 b ON a.所属一级部门 = b.一级部门名称 INNER JOIN
       实际收入表 c ON a.部门名称 = c.部门名
 WHERE (b.一级部门名称 = '一级') and c.部门名<>'1号部门'
 GROUP BY a.部门名称, a.部门代码
 ORDER BY a.部门代码
congenze 2014-06-06
  • 打赏
  • 举报
回复
引用 5 楼 fredrickhu 的回复:
你这个其实在设计表的时候在实际收入表中就应该加上一个部门代码的这个字段 不然的话按照你的要求排序是很困难的。
是啊!现在特别后悔没有这个字段,当初提需求的时候没有说一定要按照这个显示,就忽略了!现在要是改库的话要动的太多!哎!就看看能不能解决,实在不行再去改库!
congenze 2014-06-06
  • 打赏
  • 举报
回复
引用 2 楼 chwnrthd 的回复:
你的少order by 排序
还能继续问您一个问题么? 我的SQL语句 SELECT a.部门名称, a.部门代码 AS 代码, SUM(c.实际收入金额) AS 收入 FROM 部门表 a INNER JOIN 一级部门表 b ON a.所属一级部门 = b.一级部门名称 INNER JOIN 实际收入表 c ON a.部门名称 = c.部门名 WHERE (b.一级部门名称 = '一级') GROUP BY a.部门名称, a.部门代码 ORDER BY a.部门代码 查出来的数据集我能删除指定的行么?让这个数据集结果不显示这几行? 比如删除部门名叫‘1号部门’的
--小F-- 2014-06-06
  • 打赏
  • 举报
回复
你这个其实在设计表的时候在实际收入表中就应该加上一个部门代码的这个字段 不然的话按照你的要求排序是很困难的。
congenze 2014-06-06
  • 打赏
  • 举报
回复
引用 2 楼 chwnrthd 的回复:
你的少order by 排序
改好了,按照您的思路,谢谢您!
congenze 2014-06-06
  • 打赏
  • 举报
回复
引用 1 楼 chwnrthd 的回复:

select a.部门名,
		收入=SUM(c.实际收入金额)
from 部门表	a
 inner join 一级部门表 b
 on a.所属以及部门=b.一级部门代码
 inner join 实际收入表 c
 on a.部门名称=c.部门名
where b.一级部门名称='一级部门名'
group by a.部门名
order by a.部门名

您好,这个所属一级部门和一级部门代码是不一样的,按照您的这个查出来还是按照拼音的顺序排列的,也不是按照部门表中的部门代码顺序排列呢!是应该order by a.部门代码 么?上面查询的时候加上部门代码,但是order by之后还是会提示没有包含在聚合函数中!
  • 打赏
  • 举报
回复
你的少order by 排序
  • 打赏
  • 举报
回复

select a.部门名,
		收入=SUM(c.实际收入金额)
from 部门表	a
 inner join 一级部门表 b
 on a.所属以及部门=b.一级部门代码
 inner join 实际收入表 c
 on a.部门名称=c.部门名
where b.一级部门名称='一级部门名'
group by a.部门名
order by a.部门名

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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