SQLクエリ内の2つのフィールドを合計する方法


84

同じ行内にある2つのフィールドの合計を取得し、同じ行の最後にあるフィールドにその番号を入力する必要があります。

これは私のコードです。

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

これはSUM関数が使用される目的ですか、それとも列の合計を取得するためにSUM関数のみを使用できますか?

ありがとう

回答:


204

SUM集計関数です。各グループの合計を計算します。+行の2つ以上の列を計算するために使用されます。

この例を考えてみましょう。

ID  VALUE1  VALUE2
===================
1   1       2
1   2       2
2   3       4
2   4       5

 

SELECT  ID, SUM(VALUE1), SUM(VALUE2)
FROM    tableName
GROUP   BY ID

結果になります

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

結果になります

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

 

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

結果になります

ID, SUM(VALUE1 + VALUE2)
1   7
2   16

10
この答えは複雑ではありませんが、必要に応じて単純で詳細です。いいね!
ビターブルー2014年

1
賞賛のジョン、おそらくこの質問に答える最良の方法です!
アビジット


7

SUMは、複数行の列の値を合計するために使用されます。列を一緒に追加するだけです。

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]

7
ID  VALUE1  VALUE2
===================
1   1       2

1   2       2
2   3       4
2   4       5

select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName

5

私の評判ポイントが50未満であるため、上記のECoderの回答にコメントしたり投票したりすることはできませんでした。これが最善の方法であるため、同様の問題が発生したため、groupbyを使用する必要はありません。
これによりSUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))合計としてこれはあなたがしたい番号を取得しますが、またグループ化を行っていないため、エラーのことを取り除きます。これは私の質問であり、各ディーラーの合計数と合計金額を教えてくれました。次に、品質とリスクの高いディーラーローンの小計を教えてくれました。

SELECT 
    DISTINCT STEP1.DEALER_NBR
    ,COUNT(*) AS DLR_TOT_CNT
    ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
    ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
    ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
    ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
    ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
    FROM STEP1
    WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
        GROUP BY STEP1.DEALER_NBR

4

合計関数は、列の合計のみを取得します。異なる列の2つの値を合計するには、値をintに変換し、+-演算子を使用して合計します。

Select (convert(int, col1)+convert(int, col2)) as summed from tbl1

お役に立てば幸いです。


3

2つの列を一緒に追加する場合は、それらを追加するだけです。次に、クエリによって返された各行の2つの列の合計を取得します。

コードが実行しているのは、2つの列を加算してから、合計の合計を取得することです。それは機能しますが、それはあなたが達成しようとしていることではないかもしれません。


3

列を追加する際の注意点です。値の1つがNULLの場合、それらの列の合計はNULLになります。したがって、一部のポスターが2番目のパラメーターが0である合体を推奨している理由

これは古い投稿だったと思いますが、完全を期すためにこれを追加したいと思いました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.