Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Case statement to sum values - T-SQL

Posted on 2016-10-13
Medium Priority
124 Views
I'm trying to write a case statement  that sums up values, but the one below is producing null values. What am I doing wrong? *In a nutshell, (NL * 3%) + (DP * 1%) + (PR) = NR.

sum((case
when METRIC_CD = ''NL'' then
MTD_ACT * 0.03 else null end) +
(case when METRIC_CD = ''DP'' then
MTD_ACT * 0.01 else null end) +
(case when METRIC_CD = ''PR'' then
MTD_ACT * 1 else null end)) as NR

Below is the data  as it appears in the table:

METRIC_CD      MTD_ACT
NL                       1200
DP                         500
PR                      3150
DP                      2250
PR                        550
NL                    11000

Thank you for your tremendous assistance.
0
Question by:saved4use
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 20

Accepted Solution

Russ Suter earned 1800 total points
ID: 41842669
Instead of else null use else 0 (that's zero).

Adding 0 won't affect your total but adding NULL will yield a NULL result. Take the following examples:

SELECT 1 + 3 + 0 + 5 => returns 9

SELECT 1 + 3 + NULL + 5 => returns NULL

The same holds true for the SUM() function. A NULL value in the aggregate will yield NULL.
0

LVL 66

Assisted Solution

Jim Horn earned 200 total points
ID: 41842678
Russ is correct, as NULL added to anything else will equal NULL.  And to make this a hell of a lot easier to read...
`````` SUM(CASE METRIC_CD
WHEN 'NL' THEN MTD_ACT * 0.03
WHEN 'DP' THEN MTD_ACT * 0.01
WHEN 'PR' THEN MTD_ACT * 1 ELSE 0 END) as NR
``````
0

Expert Comment

ID: 41842969
Try this

sum((case
when METRIC_CD = ''NL'' then MTD_ACT * 0.03
when METRIC_CD = ''DP'' then MTD_ACT * 0.01
when METRIC_CD = ''PR'' then MTD_ACT * 1
else 0 end)) as NR
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
What if you have to shut down the entire Citrix infrastructure for hardware maintenance, software upgrades or "the unknown"? I developed this plan for "the unknown" and hope that it helps you as well. This article explains how to properly shut down …
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Via a live example, show how to shrink a transaction log file down to a reasonable size.
###### Suggested Courses
Course of the Month9 days, 7 hours left to enroll