2013-03-29 4 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  --- 

То есть сумма столбца Value, который основанный на «CreditDebit» и Units. Как я могу добиться этого при помощи CTE SQL Query

+3

Почему условие CTE? Кажется несколько произвольным, поскольку это никоим образом не требуется. Также выберите лучший заголовок. Это не слишком сложно. 'GROUP BY' - это то, что вы узнаете в любом вводном тексте SQL. –

ответ

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

hmm .. Мне нужно добавить все строки столбца [Значение]. Он не делает этого .. :-( – Tanya

+0

@Tanya - Это отвечает на вопрос, который вы задали. Для ваших исходных данных это возвращает желаемые результаты. [SQL Fiddle] (http://www.sqlfiddle.com/#!3/ 4956a/5) –

Смежные вопросы