需要脚本

时间:2017-11-15 10:45:00

标签: sql sql-server sql-server-2008

假设我们有一个表#temp1,我们需要的是,我们想要一个额外的列 ABC ,并且我们想要将输出打印为(10-10 = 0 ),(20-10)= 10,(30-10 = 20),(40-10 = 30)和(50-10 = 40)

因此,我们在下面创建了一个表格和插入脚本。

Create table #temp1 (ID Int Identity(1,1),Name varchar(10),Series bigint)

insert into #temp1 values('A',10)
insert into #temp1 values('B',20)
insert into #temp1 values('C',30)
insert into #temp1 values('D',40)
insert into #temp1 values('E',50)

我尝试如下,其中逐行递增值。

select ID,Name,Series, SUM(series) over(order by series asc Rows Between Unbounded Preceding and Current Row) ranking from #temp1

输出应为:

ID|Name|Series|ABC
1 |  A |  10  | 0
2 |  B |  20  | 10
3 |  C |  30  | 20
4 |  D |  40  | 30
5 |  E |  50  | 40

任何人都可以在这里,如何做到这一点。

4 个答案:

答案 0 :(得分:2)

只是Series - 10

SELECT ID, Name, Series, Series - 10 AS ABC
FROM #Temp1;

答案 1 :(得分:1)

尝试以下查询

select ID,Name,Series,(series - (select top 1 series from #temp1)) as abc from #temp1

答案 2 :(得分:1)

同意萨米。除非从尝试的查询中有其他内容,否则它似乎不应该是Series - 10,而是系列 - 表中的第一个系列值?

如果是这种情况,那么答案应该是

select ID,Name,Series, Series - MIN(series) over 
(order by series asc Rows Between unbounded Preceding and Current Row) ABC from #temp1

答案 3 :(得分:0)

从#temp1

中选择ID,名称,系列,(系列 - 10)作为abc