读书人

come ,看这简音的SQL如何写!

发布时间: 2012-01-14 20:02:35 作者: rapoo

come ,看这简音的SQL怎么写!!
X表如下:
A B
1 5
6 10
9 18
-1 20

要求用一条SQL查询出如下结果:
A B C
1 1 1
6 6 7
9 18 25
-1 20 45
即描述如下:
1,当A 的值> 1 且 <6时,B列显示A的值,否则不变;
2,C列的值是B列逐行累加的值

[解决办法]
declare @t table(id int identity(1,1),A int, B int)
insert @t
select 1, 5 union all
select 6, 10 union all
select 9, 18 union all
select -1, 20

SELECT A,
B = case when A between 1 and 6 then A else B end,
C = (select sum(case when A between 1 and 6 then A else B end) from @t where id <= a.id)
FROM @t as a

/*结果:
A B C
-------------------------------
1 1 1
6 6 7
9 18 25
-1 20 45
*/
[解决办法]
解决了
[解决办法]
有我的分吗?
[解决办法]
方便的话给sdhylj吧,马甲.
[解决办法]
hellowork(一两清风)偷偷加了格自增列。 :)
[解决办法]
我的是借用了表

Create Table X
(A Int,
B Int)
Insert X Select 1, 5
Union All Select 6, 10
Union All Select 9, 18
Union All Select -1, 20
GO
Select ID = Identity(Int, 1, 1), A, (Case When A > = 1 And A <= 6 Then A Else B End) As B Into #T From X

Select A, B, (Select SUM(B) From #T Where ID <= A.ID) As C From #T A

Drop Table #T
GO
Drop Table X
--Result
/*
ABC
111
667
91825
-12045
*/
[解决办法]
select A,case when A> 1 and A < 6 then A else B end as B,(select sum(case when A> 1 and A < 6 then A else B end ) from temp as D where temp.id > D.id) as c from temp


[解决办法]
没办法,算是略施小计吧,不知能不能骗过楼主:)
[解决办法]
1,当A 的值> 1 且 <6时,B列显示A的值,否则不变;

------------------
主的描述有,是

1,当A 的值> =1 且 <=6时,B列显示A的值,否则不变;

读书人网 >SQL Server

热点推荐