简单的 没分了!

hanbing_zjp 2009-04-24 10:19:34
CREATE TABLE tb
(
deptid INT ,
subdeptid INT ,
amount DECIMAL
)

INSERT INTO tb SELECT 1,NULL ,100 UNION ALL

SELECT 2, NULL ,200 UNION ALL
SELECT 3, 1, 500 UNION ALL

SELECT 4, 1 , 600 UNION ALL

SELECT 5, 2 , 300 UNION ALL

SELECT 6, 2 , 400



结果:

deptid amount
1, 1200
2, 900

就是把部门下的子部门也统计到主部门下来
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaJiaBing 2009-04-24
  • 打赏
  • 举报
回复


drop table tb
CREATE TABLE tb
(
deptid INT ,
subdeptid INT ,
amount DECIMAL
)

INSERT INTO tb SELECT 1,NULL ,100 UNION ALL

SELECT 2, NULL ,200 UNION ALL
SELECT 3, 1, 500 UNION ALL

SELECT 4, 1 , 600 UNION ALL

SELECT 5, 2 , 300 UNION ALL

SELECT 6, 2 , 400
select a.deptid,(a.amount+b.amount) amount from
(select deptid,sum(amount)amount from tb
where subdeptid is null
group by deptid) a join
(select subdeptid,SUM(amount) amount from tb
where subdeptid is not null
group by subdeptid) b

on a.deptid=b.subdeptid



deptid amount
----------- ---------------------------------------
1 1200
2 900

(2 行受影响)
hanbing_zjp 2009-04-24
  • 打赏
  • 举报
回复
sql 2000 的怎么写啊!
lg3605119 2009-04-24
  • 打赏
  • 举报
回复
tony 偶确实姓梁 不过是 神人 P梁 呵呵~~~
htl258_Tony 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lg3605119 的回复:]
少写个分号

SQL code
CREATE TABLE tb
(
deptid INT ,
subdeptid INT ,
amount DECIMAL
)

INSERT INTO tb SELECT 1,NULL ,100 UNION ALL

SELECT 2, NULL ,200 UNION ALL
SELECT 3, 1, 500 UNION ALL

SELECT 4, 1 , 600 UNION ALL

[/Quote]

.net小鸟,你也姓梁?
lg3605119 2009-04-24
  • 打赏
  • 举报
回复
少写个分号

CREATE TABLE tb
(
deptid INT ,
subdeptid INT ,
amount DECIMAL
)

INSERT INTO tb SELECT 1,NULL ,100 UNION ALL

SELECT 2, NULL ,200 UNION ALL
SELECT 3, 1, 500 UNION ALL

SELECT 4, 1 , 600 UNION ALL

SELECT 5, 2 , 300 UNION ALL

SELECT 6, 2 , 400

select * from tb


;with liang as
(
select *,typeid = deptid from tb where subdeptid is null
union all
select a.*,typeid = b.typeid from tb a ,liang b where a.subdeptid = b.deptid
)
select typeid,sum(amount) as amount from liang group by typeid
lg3605119 2009-04-24
  • 打赏
  • 举报
回复

CREATE TABLE tb
(
deptid INT ,
subdeptid INT ,
amount DECIMAL
)

INSERT INTO tb SELECT 1,NULL ,100 UNION ALL

SELECT 2, NULL ,200 UNION ALL
SELECT 3, 1, 500 UNION ALL

SELECT 4, 1 , 600 UNION ALL

SELECT 5, 2 , 300 UNION ALL

SELECT 6, 2 , 400

select * from tb


with liang as
(
select *,typeid = deptid from tb where subdeptid is null
union all
select a.*,typeid = b.typeid from tb a ,liang b where a.subdeptid = b.deptid
)
select typeid,sum(amount) as amount from liang group by typeid
hanbing_zjp 2009-04-24
  • 打赏
  • 举报
回复
顶!

34,590

社区成员

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

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