2013-03-29 80 views
0

我有有數據如表,複雜的查詢使用CTE

Date   Custid CreditDebit  Units Value 
2013-03-29 06:21:46.903  1  C 1 10 
2013-03-29 06:21:46.903  1  C 2 11 
2013-03-29 06:21:46.903  1  C 1 12 
2013-03-29 06:21:46.903  1  C 2 13 
2013-03-29 06:21:46.903  1  D 1 20 
2013-03-29 06:21:46.903  1  D 2 21 
2013-03-29 06:21:46.903  1  C 1 20 
2013-03-29 06:21:46.903  1  C 2 21 

我需要一個臨時表輸出跟隨,

Date   Custid CreditDebit  Units Value Balance 
2013-03-29 06:21:46.903  1  C 1 42  42-20 
2013-03-29 06:21:46.903  1  c 2 45  22+45-21 
2013-03-29 06:21:46.903  1  D 1 20  --- 
2013-03-29 06:21:46.903  1  D 2 21  --- 

這是值列是的總和基於'CreditDebit'和單位。 我怎樣才能做到這一點使用CTE SQL查詢

+3

CTE爲什麼規定?看起來有點武斷,因爲它不是必需的。也請選擇一個更好的標題。這並不複雜。您可以在任何介紹性的SQL文本中學習「GROUP BY」。 –

回答

2
;WITH summary_table_cte 
    AS (SELECT Date, 
       Custid, 
       CreditDebit, 
       Units, 
       sum(value) AS [Value] 
     FROM YourTable 
     GROUP BY Date, 
        Custid, 
        CreditDebit, 
        Units) 
SELECT * 
FROM summary_table_cte; 

注意在聲明的開頭分號。 CTE之前的聲明必須以分號結尾。通過在它前加上WITH,你可以放在任何地方。

+0

@Martin - 感謝您使它看起來不錯 –

+0

嗯..我需要將列的所有行加起來[Value]。它沒有那樣做.. :-( – Tanya

+0

@Tanya - 這回答你問的問題。對於你的示例源數據,這將返回你想要的結果。[SQL小提琴](http://www.sqlfiddle.com/#!3/ 4956a/5) –