求一SQL语句

vfan2010 2007-11-13 09:18:03
根据以下数据生成后面的结果,很容易看出来是什么逻辑。就是把同一个SubContractorID下的IsChangeOrder为0,1的分别求和。

SubContractorID SubContractDollarValue IsChangeOrder
-------------------- --------------------------------------- -------------
125 50.00 1
125 125.00 1
125 100.00 0
13 6.00 1
13 5000.00 0
13 500.00 1
13 500.00 0


---------------------------------
SubContractorID NotChangeOrderAmount ChangeOrderAmount
125 100 175
13 5500 506

...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2007-11-13
  • 打赏
  • 举报
回复
SELECT SubContractorID,
SUM(SubContractDollarValue * (IsChangeOrder^1) NoChangeOrderAmount
SUM(SubContractDollarValue * IsChangeOrder) ChangeOrderAmount
FROM tb
GROUP BY SubContractorID
dawugui 2007-11-13
  • 打赏
  • 举报
回复
create table tb(SubContractorID int,SubContractDollarValue int,IsChangeOrder int)
insert into tb values(125,50.00 ,1)
insert into tb values(125,125.00 ,1)
insert into tb values(125,100.00 ,0)
insert into tb values(13 ,6.00 ,1)
insert into tb values(13 ,5000.00 ,0)
insert into tb values(13 ,500.00 ,1)
insert into tb values(13 ,500.00 ,0)
go
select SubContractorID,
sum(case IsChangeOrder when 0 then SubContractDollarValue else 0 end) NotChangeOrderAmount,
sum(case IsChangeOrder when 1 then SubContractDollarValue else 0 end) ChangeOrderAmount
from tb
group by SubContractorID
order by SubContractorID desc
drop table tb

/*
SubContractorID NotChangeOrderAmount ChangeOrderAmount
--------------- -------------------- -----------------
125 100 175
13 5500 506

(所影响的行数为 2 行)
*/
kuangdp 2007-11-13
  • 打赏
  • 举报
回复
select subcontratorID ,sum(case when ischangeorder=0 then SubContractDollarValue END) as NotChangeOrderAmount,
sum(case when ischangeorder=1 then SubContractDollarValue END) as ChangeOrderAmount
from TABLE
GROUP BY subcontratorID
dawugui 2007-11-13
  • 打赏
  • 举报
回复
select SubContractorID,
sum(case IsChangeOrder when 0 then SubContractDollarValue else 0 end) NotChangeOrderAmount,
sum(case IsChangeOrder when 1 then SubContractDollarValue else 0 end) ChangeOrderAmount
from tb
group by SubContractorID

中国风 2007-11-13
  • 打赏
  • 举报
回复
select 
[SubContractorID],
[NotChangeOrderAmount]=sum(case when IsChangeOrder =0 then SubContractDollarValue else 0 end),
[ChangeOrderAmount]=sum(case when IsChangeOrder =1 then SubContractDollarValue else 0 end)
from
t
group by SubContractorID
OracleRoob 2007-11-13
  • 打赏
  • 举报
回复
select 
SubContractorID,
sum(case when IsChangeOrder=0 then SubContractDollarValue else 0 end) as NotChangeOrderAmount,
sum(case when IsChangeOrder=1 then SubContractDollarValue else 0 end) as ChangeOrderAmount
from 表
group by SubContractorID
中国风 2007-11-13
  • 打赏
  • 举报
回复
select
[SubContractorID],
[NotChangeOrderAmount]=sum(case when IsChangeOrder =0 then SubContractDollarValue else 0 end),
[ChangeOrderAmount]=sum(case when IsChangeOrder =1 then SubContractDollarValue else 0 end)
from
t
group by SubContractorID

22,209

社区成员

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

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