tags:

views:

170

answers:

2

My table is like this

A | X | Y
--+---+--
1 | 2 | 3
1 | 4 | 3
2 | 9 | 1
2 | 7 | 1

What I want is to sum X column with Group By A but add Y only once. The values in column Y are always same for a specific A.

When I run this:

SELECT SUM(X + Y) FROM TABLE GROUP BY A

It gives me: 12, 18. But I need 9, 17.

Thanks.

+3  A: 
SELECT SUM(X) + MIN(Y) FROM TABLE GROUP BY A
Daniel Pratt
Works very nice, Thanks. Distinct Y seems like a better choice.
Aseem Gautam
+5  A: 

Have a look at (SUM (Transact-SQL))

SUM ( [ ALL | DISTINCT ] expression )

DECLARE @Table TABLE(
        A INT,
        X FLOAT, 
        Y FLOAT
)
INSERT INTO @Table SELECT 1,2,3 
INSERT INTO @Table SELECT 1,4,3 
INSERT INTO @Table SELECT 2,9,1 
INSERT INTO @Table SELECT 2,7,1

SELECT  A,
        SUM(X) + SUM(DISTINCT Y) SUMVals
FROM    @Table
GROUP BY A
astander
Pervious query(before edit) also worked!! This seems a lot better. Thanks.
Aseem Gautam
Sorry about that, I completely forgot about **DISTINT** in **SUM** for a moment. I always just think **COUNT(DISTINT)** X-)
astander