Solved

help with tricky query.

Posted on 2015-02-11
3
48 Views
Last Modified: 2015-02-12
I need to compare Table_1 and Table_2.

Table_1 and Table_2 both have duplicate records. Table_2 has more duplicate records in it than table_1.
I need a list of all of the names in table_2 that are also in table_1. But I want the names of those in Table_2
that have more duplicate names in table_2. So for example, below both tables have Joseph Dreadson in them.


Table_2 has more records in it than Table_1.

I need a list of all of the names in Table_2 that have more records than their matching names in
Table_1.


So for these two tables :


Table_1
FNAME   LNAME
Bob     Candoiti
Mary    Semper
Mary    Semper
Mary    Semper
Joseph  Dreadson
Terry   James




Table_2
FNAME   LNAME
Bob     Candoiti
Mary    Semper
Mary    Semper
Joseph  Dreadson
Joseph  Dreadson
Joseph  Dreadson
Terry   James
Terry   James



So the desired query would return these two records, because these people occur more frequently in table_2 than table_1
 :

Joseph Deadson
Terry  James
0
Comment
Question by:brgdotnet
  • 2
3 Comments
 
LVL 48

Accepted Solution

by:
PortletPaul earned 500 total points
ID: 40605009
SELECT
       coalesce(t1.fname,t2.fname) as fname
     , coalesce(t1.lname,t2.lname) as lname
     , t1.count_t1
     , t2.count_t2
FROM (
            SELECT
                  fname
                , lname
                , COUNT(*) AS COUNT_t1
            FROM table_1
            GROUP BY
                  fname
                , lname
      ) T1
      FULL OUTER JOIN (
            SELECT
                  fname
                , lname
                , COUNT(*) AS COUNT_t2
            FROM table_2
            GROUP BY
                  fname
                , lname
      ) T2 ON T1.fname = T2.fname
      AND T1.lname = T2.lname
WHERE T2.count_t2 > T1.count_t1
;

Open in new window


|  FNAME |    LNAME | COUNT_T1 | COUNT_T2 |
|--------|----------|----------|----------|
| Joseph | Dreadson |        1 |        3 |
|  Terry |    James |        1 |        2 |

Open in new window

0
 
LVL 2

Author Closing Comment

by:brgdotnet
ID: 40607335
Awesome!
0
 
LVL 48

Expert Comment

by:PortletPaul
ID: 40607386
WHERE T2.count_t2 > T1.count_t1
OR T1.count_t1 IS NULL
OR T2.count_t1 IS NULL

it may need to cater for NULLs which I forgot
0

Featured Post

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
migration MS SQL database to Oracle 30 63
T-SQL: Do I need CLUSTERED here? 13 46
Find SQL query used by application 3 20
T-SQL: New to using transactions 9 31
I wrote this interesting script that really help me find jobs or procedures when working in a huge environment. I could I have written it as a Procedure but then I would have to have it on each machine or have a link to a server-related search that …
Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question