2016-05-26 2 views
0

получить сумму столбцов в следующей колонке SQL

<table border="1"> 
 
    <tr><th>Pcode</th><th>TCode</th><th>TName</th><th>CCode</th><th>Rate</th><th>Total=sum(rates of all PCodes)</th></tr> 
 
    <b><tr><td>12345</td><td>200</td><td>200</td><td>12</td><td>2000</td><td>8000</td></tr> 
 
    <tr><td>12345</td><td>201</td><td>200</td><td>12</td><td>1000</td><td>8000</td></tr> 
 
    <tr><td>12345</td><td>202</td><td>200</td><td>12</td><td>2000</td><td>8000</td></tr> 
 
    <tr><td>12345</td><td>205</td><td>200</td><td>12</td><td>3000</td><td>8000</td></tr> 
 
    <tr><td>12346</td><td>200</td><td>200</td><td>12</td><td>4000</td><td>32000</td></tr> 
 
    <tr><td>12346</td><td>204</td><td>200</td><td>12</td><td>5000</td><td>32000</td></tr> 
 
    <tr><td>12346</td><td>208</td><td>200</td><td>12</td><td>5000</td><td>32000</td></tr> 
 
    <tr><td>12346</td><td>1235</td><td>200</td><td>12</td><td>3000</td><td>32000</td></tr> 
 
    <tr><td>12346</td><td>12</td><td>200</td><td>12</td><td>7000</td><td>32000</td></tr> 
 
    <tr><td>12346</td><td>100</td><td>200</td><td>12</td><td>8000</td><td>32000</td></tr> 
 
    
 
</table> 
 
<p>I have a table with Pcode, Tcode, TName, CCode, Rate. Need to find the sum under Pcode as Total in next column</p>

Я хочу, чтобы этот столбец таблицы «(Total)», чтобы быть извлечена вместе со всеми столбцами в таблице ниже (SQL).

Я пробовал ROLLUP и группу пока не решил.

общая сумма для группы по Pcode и получить эту сумму в следующий столбец.

ТИА,

+0

Где находится таблица? Просьба также предоставить образцы данных и желаемый результат, соответствующий данным образца. – trincot

+0

Извините, забыл добавить html-код – Cruzer

+0

Вы также должны включить запрос, который вы пробовали. Взгляните на это: http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ – Morpheus

ответ

0
With your_table_CTE as (
    select C.x,A.y,B.x from DFG inner join A, inner join B, inner join C 
) 

select a.pcode, a.TCode, a.TName, a.CCode, a.Rate, b.Total 
from your_table_CTE a 
join (
    select pcode, sum(rate) as Total 
    from your_table_CTE 
    group by pcode 
) b 
on a.pcode = b.pcode 
+1

Это правильная идея, но вам нужно также использовать 'your_table' в подзапросе и псевдоним' sum (rate) 'as' Total', чтобы он работал. – Morpheus

+0

yep, спасибо, исправлено. – mo2

+0

your_table - это не просто таблица, ее выбор * из четырех разных таблиц с внутренними объединениями. 'your_table = выберите C.x, A.y, B.x из внутреннего соединения DFG A, внутреннее соединение B, внутреннее соединение C' so 'your_table' - это запрос, а не таблица. – Cruzer

0

Вам только нужно использовать GROUP BY. Это решение использует выражение общей таблицы (замените tempTable на имя вашей таблицы):

;WITH TotalByPCode (PCode, Total) AS (
    SELECT PCode, SUM(Rate) FROM tempTable GROUP BY PCode 
    ) 

SELECT R.PCode, R.TCode, R.TName, R.CCode, R.Rate, T.Total 
FROM tempTable R JOIN TotalByPCode T ON R.PCode = T.PCode 
; 
Смежные вопросы