假设我有一个表名为 tblTemp,其数据如下:
| ID | AMOUNT |
----------------
| 1 | 10 |
| 1-1 | 20 |
| 1-2 | 30 |
| 1-3 | 40 |
| 2 | 50 |
| 3 | 60 |
| 4 | 70 |
| 4-1 | 80 |
| 5 | 90 |
| 6 | 100 |
- 如果 ID 只有一个 ID,则 ID 格式为 X(不带破折号);如果新 ID (Y) 是 (X) 的子 ID,则格式为 (XY)。
我想在输出中添加一个新列(总金额),如下所示:
| ID | AMOUNT | Total Amount |
---------------------------------
| 1 | 10 | 100 |
| 1-1 | 20 | 100 |
| 1-2 | 30 | 100 |
| 1-3 | 40 | 100 |
| 2 | 50 | 50 |
| 3 | 60 | 60 |
| 4 | 70 | 150 |
| 4-1 | 80 | 150 |
| 5 | 90 | 90 |
| 6 | 100 | 100 |
“Total Amount”栏是Amount栏的合计值与ID栏的(X)相同的计算栏。
为了获取父 ID (X),我使用以下 SQL:
SELECT ID, SUBSTRING (ID, 1, IIF (CHARINDEX('-', ID) = 0, len(ID), CHARINDEX('-', ID) - 1) ), Amount FROM tblTemp
如何在 SQL Server 2012 中进行这样的查询?
你可以在这里使用 sqlfiddle来测试它。
谢谢你
彭甘