同じ行内にある2つのフィールドの合計を取得し、同じ行の最後にあるフィールドにその番号を入力する必要があります。
これは私のコードです。
Sum(tbl1.fld1 + tbl1.fld2) AS [Total]
これはSUM関数が使用される目的ですか、それとも列の合計を取得するためにSUM関数のみを使用できますか?
ありがとう
回答:
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
次のことを試してください。
SELECT *, (FieldA + FieldB) AS Sum
FROM Table
私の評判ポイントが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
合計関数は、列の合計のみを取得します。異なる列の2つの値を合計するには、値をintに変換し、+-演算子を使用して合計します。
Select (convert(int, col1)+convert(int, col2)) as summed from tbl1
お役に立てば幸いです。