Vinod
Vinod

Reputation: 32861

Duplicate result

I am writing a query in SQL server2005. This is returning me a duplicate rows in the result. Can i eliminate this duplication with a particular column as the key?

Upvotes: 1

Views: 662

Answers (6)

Onzinnet
Onzinnet

Reputation:

It's possible that your result contains both an associative and a numeric array.

Upvotes: 0

Aleksi Yrttiaho
Aleksi Yrttiaho

Reputation: 8446

As you have pointed out in the comments, you are using a stored procedure. One way to handle this case is to create a temporary table which you populate using the stored procedure. Then select the results from the temporary table and prune the duplicates with either SELECT DISTINCT or GROUP BY.

Upvotes: 0

Pontus Gagge
Pontus Gagge

Reputation: 17258

You can use SELECT DISTINCT to eliminate duplicates, as has been advised in other comments, and it may work well enough for now, but you may be begging for future trouble. All too frequently, if you cannot get a unique result without SELECT DISTINCT, your database model has been denormalized too far, and your queries can get bogged down by retrieving and then eliminating a large number of duplicates. (However, of course, normalizing an existing database schema is rarely trivial...)

Without more information on the schema and the query it's impossible to tell whether SELECT DISTINCT is an acceptable workaround, or whether there simply is a better join statement.

Upvotes: 3

Greg Hewgill
Greg Hewgill

Reputation: 992707

You can eliminate complete duplicate rows using the DISTINCT keyword. If there is some key column that is a duplicate but the rest of the columns are not, then you would have to use aggregate functions and a GROUP BY clause to explain to SQL Server what data you do want returned.

Upvotes: 9

Chris Latta
Chris Latta

Reputation: 20560

If you just want one column:

SELECT DISTINCT MyColumn FROM MyTable;

If you want a variety of columns, possibly returning a maximum or sum, try grouping it:

SELECT MyFirstColumn, MySecondColumn, MAX(SomeDate) AS MaxDate, SUM(Amount) AS TotalAmount 
FROM MyTable 
GROUP BY MyFirstColumn, MySecondColumn;

Upvotes: 0

Bliek
Bliek

Reputation: 466

SELECT DISTINCT will eliminate duplicate rows.

Upvotes: 6

Related Questions