2016-05-05 11 views
0

SQL Serverにテーブルがあり、列はPIDを返し、Val1は各PIDの2つの合計列を追加しようとしています。複数列の値を持つ列のSQL select sum

ValTotalの列は、すべてのValの合計がPIDである必要があります。

したがって、たとえば、選択怒鳴るに、あなたはVal1TotalVal2Totalは私がウェブを検索しましたし、見つけることができません1.

PID Val1 Val1Total 
--------------------- 
1 10 20 'See how both (1) columns have the same total  
2 10 10  
1 10 20 'See how both (1) columns have the same total 
4 10 10  
3 10 10  

PIDためVal1SUMVal2あることがわかります私が探しているもの、これは私ができることですか?

ご迷惑をおかけして申し訳ございませんが、よろしくお願いいたします。

+0

質問を編集してクエリを入力してください。サンプルデータも役立ちます。 –

+0

あなたはここで何を求めているのか分かりません。あなたの例では、val1Totalとval2TotalのValTotalの合計です。val1Totalとval2Totalは、追加したい列です。 –

+0

お詫び申し上げます私の質問は明らかではありませんが、単純なテーブルであると推測できます。 –

答えて

2

おそらく、あなただけのウィンドウ関数を探しています:

select pid, val1, val2, 
     sum(val1) over (partition by pid) as val1total, 
     sum(val2) over (partition by pid) as val2total 
from t; 
+0

これは私が後にしたものであり、感謝しています。 –

0

あなたはSQLでOLAP関数(ウィンドウ関数)を使用していることを行うことができます。しかし、MySQLがそれらをサポートしているかどうかはわかりません。 Mysqlがサポートされているかどうか確認してください。SUM() OVER(PARTITION BY ... ORDER BY ...)

そうでなければ、同じテーブルの結合を使って実現できます。サンプルコードは次のとおりです。

select A.PID, 
    A.Val1, 
    A.Val2, 
    B.Val1Total, 
    B.Val2Total, 
From Table A 
Inner Join (Select PID, sum(Val1) as Val1Total, sum(Val2) as Val2Total 
     From Table) B 
on A.PID = B.PID 
関連する問題