一個新列假設我有一個表名作爲tblTemp其中有如下數據:創建和數據的子查詢的SQL Server中
| 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將是格式爲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 |
的「總量」列是金額列的計算列,其總和值,所述(X)在ID列中是相同的。
爲了得到父ID(X),我用下面的SQL:
SELECT ID, SUBSTRING (ID, 1, IIF (CHARINDEX('-', ID) = 0, len(ID), CHARINDEX('-', ID) - 1) ), Amount FROM tblTemp
我怎麼能這樣的查詢在SQL Server 2012?
您可以使用sqlfiddle here進行測試。
謝謝
蓬安
感謝bluefeet的幫助。它正在工作。 – Pengan
您如何看待更簡單的'Left(ID,CharIndex(' - ',ID +' - ') - 1)'? – ErikE
@ErikE寫這個的方法有很多,我只是向他們展示他們如何使用他們現有的查詢來得到結果。 – Taryn