2016-11-19 11 views
3

データは次の形式です。異なる行からの計算列からの合計値

Column 1およびValueデータベースから。私はColumn 2を抽出するためにLEFT()関数を使用します。私が助けが必要なところでは、新しく計算されたColumn 2の値を合計し、その合計に新しい列を列挙することです。

https://i.stack.imgur.com/WNgkU.png

すべてのヘルプは高く評価されます。ありがとう。

答えて

2

基本的に、あなたが集計キーの機能を持つ集約をしたいように見える:

select left(column1, 1), sum(value) 
from t 
group by left(column1, 1); 
2

あなたはWindowsを使用してそれを達成することができますが、次のクエリ

SELECT column1 
, SUBSTRING(column1,1,1) as [calculated column 2] 
,value 
, SUM(value) OVER(PARTITION BY SUBSTRING(column1,1,1) ) 
FROM table1 
を試してみてください

をに関する機能します

SUBSTRING(column1,1,1)String Functions)の代わりにLEFT(Column1,1)を使用することもできます

2
SELECT * 
    ,CalculatedColumn2 = LEFT(Column1,1) 
    ,Value 
    ,CalculatedSum = SUM(Value) OVER (PARTITION BY LEFT(Column1,1)) 
FROM 
    Table 

SUM()OVERなどの分割されたウィンドウ機能を使用することができますが、Gordonの答えはあなたにSUMを与えます。

+0

ありがとうございました!これはすごくうまくいった!感謝祭が良い! – Nich

+0

@あなたの歓迎です。あなたのすべてのセットが投票を忘れることなく、あなたを助けてくれた回答を受け入れ、他の人があなたの質問を受け取り、評判のポイントが得られたことを知っている場合は、あなたにも感謝の挨拶! – Matt

1

は、サブクエリとして設定し、新しい列によってvalue列グループの合計を見つけた結果LEFT機能と使用を使用してcolumn1からの最初の文字を取得します。

クエリ

SELECT t.[column2], SUM(t.[value]) as [value] FROM(
    SELECT [column1], LEFT([column1], 1) AS [column2], [value] 
    FROM [your_table_name] 
)t 
GROUP BY t.[column2]; 
1

追加左から値を含めることができcomputed persisted column(column1のを、1)。あなたはあなたのコードを繰り返さない。

alter table tbl add newcomputedcol column (left(column1, 1)) persisted 

使用subqryをグループ化したり句を超える使用:あなたの新しい持続列がインデックスを作成することができ

select 
    *, 
    sum(value) over() over(partition by newcomputedcol) SumPerNewComputedCol 
from tbl 

、あなたのQRYをビューに追加することができます。

関連する問題