2016-05-26 25 views
0

bekommen Summe der Spalten in der nächsten Spalte 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>

ich diese Tabellenspalte wollen ‚(Gesamt)‘ zusammen mit allen Spalten in der folgenden Tabelle (SQL) geholt werden.

Ich habe ROLLUP versucht und gruppiere noch keine Lösung.

die Summe nach Pcode gruppieren und diese Summe in die nächste Spalte bringen.

TIA,

+0

Wo ist die Tabelle? Bitte geben Sie auch die Probendaten und die gewünschte Ausgabe entsprechend den Probendaten an. – trincot

+0

Entschuldigung vergessen, HTML-Code hinzufügen – Cruzer

+0

Sie sollten auch die Abfrage, die Sie versucht haben, enthalten. Werfen Sie einen Blick auf diese: http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ – Morpheus

Antwort

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

Das ist die richtige Idee, aber Sie müssen auch 'your_table' in der Unterabfrage und alias' sum (rate) 'als' Total' verwenden, damit es funktioniert. – Morpheus

+0

yep, danke, behoben. – mo2

+0

your_table ist nicht nur eine Tabelle, sondern ein select * aus vier verschiedenen Tabellen mit inneren Joins. 'your_table = wähle C.x, A.y, B.x aus DFG Inner Join A, Inner Join B, Inner Join C' also' your_table' ist eine Query, keine Tabelle. – Cruzer

0

Sie brauchen nur GROUP BY zu verwenden. Diese Lösung verwendet einen allgemeinen Tabellenausdruck (ersetzen Sie tempTable durch den Namen Ihrer Tabelle):