The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Databases
> MS SQL Development
|
Finding records that vary only by one field
Discuss Finding records that vary only by one field in the MS SQL Development forum on Dev Shed. Finding records that vary only by one field MS SQL Development forum discussing administration, MS SQL queries, and other MS SQL-related topics. SQL Server is Microsoft's enterprise database engine.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

May 31st, 2012, 02:03 PM
|
|
Contributing User
|
|
Join Date: Nov 2003
Posts: 53
Time spent in forums: 6 h 33 m 3 sec
Reputation Power: 10
|
|
|
Finding records that vary only by one field
Hi,
I want to isolate records in a large dataset where there is a difference on only one field.
For example, if my headers are:
aspect1 aspect2 aspect3 aspect4
I want to find all records where aspect1, aspect2 and aspect3 are the same, but aspect4 is different.
Is there a way to do that?
Thank you for any insight,
|

May 31st, 2012, 03:22 PM
|
 |
SQL Consultant
|
|
Join Date: Feb 2003
Location: Toronto Canada
|
|
Quote: | Originally Posted by One Stupid Guy I want to find all records where aspect1, aspect2 and aspect3 are the same, but aspect4 is different. |
Code:
SELECT t.aspect1
, t.aspect2
, t.aspect3
, t.aspect4
FROM ( SELECT aspect1
, aspect2
, aspect3
FROM daTable
GROUP
BY aspect1
, aspect2
, aspect3
HAVING COUNT(*) > 1 ) AS d
INNER
JOIN daTable AS t
ON t.aspect1 = d.aspect1
AND t.aspect2 = d.aspect2
AND t.aspect3 = d.aspect3
|

May 31st, 2012, 04:32 PM
|
|
Contributing User
|
|
Join Date: Nov 2003
Posts: 53
Time spent in forums: 6 h 33 m 3 sec
Reputation Power: 10
|
|
|
Thank you r937,
You're considerably better than Mayor Ford.
I didn't get what I wanted though.
I was able to determine that I really wanted instances where aspect1 and aspect2 were the same while aspect4 differed (ie, we can ignore aspect3 from my original post).
Below is the code I used exactly. But it returned all records, so I missed something.
GO
SELECT t.[aspect1]
,t.[aspect2]
,t.[aspect4]
FROM (SELECT [aspect1]
,[aspect2]
FROM [daTable]
GROUP BY [aspect1]
,[aspect2]
HAVING COUNT(*) > 1) AS d
INNER JOIN [daTable] AS t
ON t.[aspect1] = d.[aspect1]
AND t.[aspect2] = d.aspect2]
ORDER BY [aspect1]
,[aspect2]
,[aspect4]
|

May 31st, 2012, 05:54 PM
|
 |
SQL Consultant
|
|
Join Date: Feb 2003
Location: Toronto Canada
|
|
|
the only reason that query would return all rows in the table is because every single combination of aspect1 and aspect2 is repeated at least once
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|