我試圖讓一組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
什麼是表結構是怎樣的? –