VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1352|回复: 11

小弟急求一个问题!!

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-7 10:00:01 | 显示全部楼层 |阅读模式
有A表里面有
ID    GX    NUM   NUM1
1     A     100    50
2     A     200    30
3     A     300    40
3     B     250    20
4     B     100    30
5     B     200    20
5     A     150    25
6     B     200    30
现在要按ID合计NUM 和NUM1的值,如果ID相同GX有A和B两条记录的
NUM的值取A的值,NUM1的值取A和B加起来的值 在按ID分组.
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-24 17:30:01 | 显示全部楼层
select ID,sum(case GX when 'A' then NUM else 0 end) as NUM,sum(NUM1) as NUM1 from A group by ID
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-5-24 17:45:02 | 显示全部楼层
select ID ,GX,sum(NUM) num, sum(NUM1) num1
from tablename
group by ID ,GX
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-24 21:45:01 | 显示全部楼层
select ID,sum(case GX when 'A' then NUM else 0 end) as NUM,sum(NUM1) as NUM1 from A where exists(select 1 from A t where t.ID=ID and t.GX='A') group by ID
union
select ID,sum(NUM) as NUM,sum(NUM1) as NUM1 from A where not exists(select 1 from A t where t.ID=ID and t.GX='A') group by ID
回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-24 23:15:01 | 显示全部楼层
select id ,sum(case when gx = 'A' then num else 0 end),sum(num + num1)
from(
    select id ,gx,sum(num),sum(num1)
    from t
    group by id,gx) _x
group by id
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-5-25 00:00:01 | 显示全部楼层
create table a(id int,GX char(1),NUM int,NUM1 int)
insert a
select 1   ,'A',     100,    50
union all
select 2   ,'A',     200,    30
union all
select 3   ,'A',     300,    40
union all
select 3   ,'B',     250,    20
union all
select 4   ,'B',     100,    30
union all
select 5   ,'B',     200,    20
union all
select 5   ,'A',     150,    25
union all
select 6   ,'B',     200,    30
union all
select 6   ,'B',     200,    30
union all
select 6   ,'B',     200,    30



select ID ,GX,sum(NUM) num, sum(NUM1) num1
from a
group by ID , GX
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-5-25 14:00:02 | 显示全部楼层
CREATE TABLE A
(ID INT,
GX  CHAR(1),
NUM  INT,
NUM1 INT
)
GO

INSERT INTO A(ID,GX,NUM,NUM1)
    SELECT 1,'A',100,50
UNION ALL SELECT 2,'A',200,30
UNION ALL SELECT 3,'A',300,40
UNION ALL SELECT 3,'B',250,20
UNION ALL SELECT 4,'B',100,30
UNION ALL SELECT 5,'B',200,20
UNION ALL SELECT 5,'A',150,25
UNION ALL SELECT 6,'B',200,30
GO

SELECT ID,MAX(ISNULL(NNUM,NUM)),SUM(NUM1) FROM
(SELECT M.ID,M.GX,M.NUM,M.NUM1,N.GX AS NGX,N.NUM AS NNUM FROM A M LEFT JOIN A N ON M.ID=N.ID AND N.GX='A') T
GROUP BY ID
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-25 14:45:01 | 显示全部楼层
好象还没有把只有A或只有B的记录算出来啊。
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-5-25 19:30:02 | 显示全部楼层
SELECT ID,ISNULL(NNUM,NUM),SUM(NUM1) FROM
(SELECT M.ID,M.GX,M.NUM,M.NUM1,N.GX AS NGX,N.NUM AS NNUM FROM A M LEFT JOIN A N ON M.ID=N.ID AND N.GX='A') T
GROUP BY ID,ISNULL(NNUM,NUM)
ORDER BY ID

这个也可以
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-5-25 20:45:01 | 显示全部楼层
你试一下我的这两种看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表