我有下表
| 子串(區域,6,3) | 數量 |
|---|---|
| 101 | 10 |
| 103 | 15 |
| 102 | 11 |
| 104 | 30 |
| 105 | 25 |
| 107 | 17 |
| 108 | 23 |
| 106 | 48 |
我希望在不重復該區域的 IIF(因為它是 4 個序列的累積)的情況下得到如下結果:
| 新區域(子字串(區域,6,3) | sum_qty |
|---|---|
| 101-104 | 66 |
| 105-108 | 117 |
我不知道如何創建新區域列才能獲得總和數量
期待您的幫助。
還請添加解釋,以便我了解查詢的運行方式。
uj5u.com熱心網友回復:
我想這就是你要找的。
我們只是使用視窗函式 row_number() 來創建Grp
注意:如果您使用重復值AREA而dense_rank()不是row_number()
例子
Select new_area = concat(min(area),'-',max(area))
,qty = sum(qty)
From (
Select area=substring(area,6,3)
,qty
,Grp = (row_number() over (order by substring(area,6,3))-1) / 4
From YourTable
) A
Group By Grp
結果
new_area qty
101-104 66
105-108 113 -- get different results
如果您要運行子查詢,您將看到以下內容。

然后聚合按創建列分組的資料就變成了一件小事GRP
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528475.html
標籤:sqlsql服务器
