Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: SQL Server
Expertise: Beginner
Jun 20, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Selecting with Distinct

I am trying to query a database with the following:
    SystemName, OwnerID, Location, Productver, StartDate, 
    EndDate, ProjectName
FROM Devices
ORDER BY SystemName
I only want to have the DISTINCT affect the values for 'SystemName'; I don't care what the values for the other variable are. In other words, I wish to get a query with the duplicate values for SystemName being eliminated by using DISTINCT and also obtain the values for the remaining fields (OwnerID, Location, Productver, StartDate, EndDate, ProjectName), with their duplicates being irrelevant.

Do I need to do a subquery or a join or what? I've tried this but it doesn't work:

SELECT OwnerID, Location, Productver, StartDate, 
    EndDate, ProjectName DISTINCT SystemName
FROM Devices
ORDER BY SystemName

As you found out, DISTINCT affects all the columns in the SELECT statement. In other words, it returns records where all the columns together are a unique value. You can't specify a single distinct column plus any other columns, because if there were three records with the same value for SystemName, and varying values for the other columns, the query would not know which data to return for the remaining columns.

If the data is the same in the other columns, using DISTINCT shouldn't be a problem. If the remaining columns have varying data and you want to return the additional columns, for example in a recordset, you could set the values in the query like this:

SELECT DISTINCT systemname, ownerid=null FROM devices
If you have this data:
systemname   ownerid     
----------   -------
ABC          123
ABC          123
ABC          345
DEF          Null
DEF          456
The above query would return:
systemname   ownerid     
----------   -------
ABC          NULL
DEF          NULL
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date