我试图让一组2行之间做一个表中连续行之间分组没有游标的情况,可有一个人帮我章这个无光标
Col1(int) Col2(int)
--------- ---------
1 20
2 30
3 40
我想这样
Col1 Col2
---- ----
1-2 50
2-3 70
输出
我试图让一组2行之间做一个表中连续行之间分组没有游标的情况,可有一个人帮我章这个无光标
Col1(int) Col2(int)
--------- ---------
1 20
2 30
3 40
我想这样
Col1 Col2
---- ----
1-2 50
2-3 70
输出
您可以测试下面的查询也...
我已经在我的机器oracle的,这就是为什么我可以运行,并说只有Oracle查询..
请检查这是否也可以在SQL服务器上工作,并告诉我有关...
select * from
(Select lag (col1) over (order by col1)|| '-' || col1 as col1
col2 + lag (col2) over (order by col1) as Col2
From mytable
)
where col2 is not null;
in oracle lag()函数用于捕获最后一行值..如果它是第一行,那么这个函数将给出空值..因此,通过在null值上应用加法,您将只获得空值
由此概念,我们将得到所需的输出...
这是一个棘手的,如果你不想重复行(1-2,2-3),你可以期望有一些遗漏的ID(这将是正常如果你有一个身份字段)。
试试这个:
CREATE TABLE #temp (id INT, value INT)
INSERT INTO #temp
SELECT 1,2
UNION ALL
SELECT 2,8
UNION ALL
SELECT 3,8
UNION ALL
SELECT 5,19
SELECT id, value, ROW_NUMBER() OVER (ORDER BY id) AS rownumber
INTO #temp2
FROM #temp
SELECT * FROM #temp2
SELECT CAST(b.id AS VARCHAR(10)) + '-' + CAST(a.id AS VARCHAR(10)) AS col1,
a.value + b.value as Col2
FROM #temp2 a
JOIN #temp2 b
ON a.rownumber = b.rownumber+1
WHERE ABS(a.rownumber)%2 = 0
什么是表结构是怎样的? –