web-dev-qa-db-ja.com

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

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

これが私のコードです。

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

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

ありがとう

61
Anton Hughes

SUMは集約関数です。それは各グループの合計を計算します。 +は、行内の複数の列を計算するために使用されます。

この例を考えてください。

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
144
John Woo

以下を試してください。

SELECT *, (FieldA + FieldB) AS Sum
FROM Table
25
Obl Tobl

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

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
7
Daniel Kelley
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
6
E Coder

Sum関数は列の合計を取得するだけです。異なる列からの2つの値を合計するには、値をintに変換し、+ - 演算子を使用してそれらを合計します。

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

それが役立つことを願っています。

4
LuigiEdlCarno

私の評判ポイントが50未満であるため、私は上記のE Coderの答えにコメントしたり投票したりすることができませんでした。私が同じような問題を抱えていたのでこれはそれをするための最善の方法であるのであなたはによってグループを使用する必要はありません。
TotalとしてSUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))を実行することで、必要な数になりますが、Group Byを実行しないことによるエラーもなくなります。これは私の質問でした、そして私にそれぞれのディーラーのための合計数と合計量を与えて、そして次に私に品質と危険なディーラーローンのための小計を与えました。

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
3
CelticCoder

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

あなたのコードがしていることは2つの列を一緒に足し合わせてそれから合計の合計を得ることです。それはうまくいくでしょう、しかしそれはあなたが達成しようとしていることではないかもしれません。

3
Dan Bracuk

列を追加することを忘れないでください。値の1つがNULLの場合、それらの列の合計はNULLになります。このようになぜいくつかのポスターは0である2番目のパラメータとの合体を推薦しました

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

0
Barb Dawdy