Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Get records having different data in 2 rows

Get records having different data in 2 rows

Scheduled Pinned Locked Moved Database
databasequestion
13 Posts 8 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Vipul Mehta

    I have 2 columns (Account Number & State) with follwing set of records in my table Acc No State 1001 WA 1002 NY 1002 NY 1002 NY 1003 CA 1003 CA 1001 CA 1002 NY I want to pull such Account Numbers that has multiple states associated with that account. Looking at the existing records, output should be as shown below 1001 1002 What query should I write to get this result set?

    Regards, Vipul Mehta

    A Offline
    A Offline
    Arun Vasu
    wrote on last edited by
    #4

    Create Table T1 (Col1 int, Col2 varchar(50)) Insert into T1 Select 1001,'WA' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1003,'CA' Insert into T1 Select 1003,'CA' Insert into T1 Select 1001,'CA' Insert into T1 Select 1002,'NY' select distinct(col1) from t1 group by col1,col2 having count(col1)<2 output will come one record. because state only one record have multi state

    M S 2 Replies Last reply
    0
    • A Arun Vasu

      Create Table T1 (Col1 int, Col2 varchar(50)) Insert into T1 Select 1001,'WA' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1003,'CA' Insert into T1 Select 1003,'CA' Insert into T1 Select 1001,'CA' Insert into T1 Select 1002,'NY' select distinct(col1) from t1 group by col1,col2 having count(col1)<2 output will come one record. because state only one record have multi state

      M Offline
      M Offline
      Mycroft Holmes
      wrote on last edited by
      #5

      Jammo gave this exact same answer 2 hours earlier and it was a lot more understandable. Try using the formatting tools for placing code, your answer will be much more readable!

      Never underestimate the power of human stupidity RAH

      B 1 Reply Last reply
      0
      • V Vipul Mehta

        I have 2 columns (Account Number & State) with follwing set of records in my table Acc No State 1001 WA 1002 NY 1002 NY 1002 NY 1003 CA 1003 CA 1001 CA 1002 NY I want to pull such Account Numbers that has multiple states associated with that account. Looking at the existing records, output should be as shown below 1001 1002 What query should I write to get this result set?

        Regards, Vipul Mehta

        B Offline
        B Offline
        Bernhard Hiller
        wrote on last edited by
        #6

        Why do you expect "1002" to be among the output? Only "NY" is associated with "1002", though 4 times. But you said "multiple states".

        1 Reply Last reply
        0
        • J JammoD87

          Hi, An alternative way to retrieve the data would be...

          SELECT [Acc No] FROM table
          GROUP BY State
          HAVING COUNT(State) > 1

          Thanks,

          B Offline
          B Offline
          Bernhard Hiller
          wrote on last edited by
          #7

          That causes error message 8120 in Microsoft SQL server (similar message in MS Access):

          Column [Acc No] is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

          J 1 Reply Last reply
          0
          • M Mycroft Holmes

            Jammo gave this exact same answer 2 hours earlier and it was a lot more understandable. Try using the formatting tools for placing code, your answer will be much more readable!

            Never underestimate the power of human stupidity RAH

            B Offline
            B Offline
            Bernhard Hiller
            wrote on last edited by
            #8

            Arun's answer is clearly different from Jammo's. And Jammo's SQL statement fails with an error message.

            M 1 Reply Last reply
            0
            • B Bernhard Hiller

              That causes error message 8120 in Microsoft SQL server (similar message in MS Access):

              Column [Acc No] is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

              J Offline
              J Offline
              JammoD87
              wrote on last edited by
              #9

              Yeah, slight typo there did it on the quick, will have to read it properly next time!

              SELECT [Acc No] FROM table
              GROUP BY [Acc No], State
              HAVING COUNT(State) > 1

              Sorry about that :doh:

              1 Reply Last reply
              0
              • A Arun Vasu

                Create Table T1 (Col1 int, Col2 varchar(50)) Insert into T1 Select 1001,'WA' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1002,'NY' Insert into T1 Select 1003,'CA' Insert into T1 Select 1003,'CA' Insert into T1 Select 1001,'CA' Insert into T1 Select 1002,'NY' select distinct(col1) from t1 group by col1,col2 having count(col1)<2 output will come one record. because state only one record have multi state

                S Offline
                S Offline
                Simon_Whale
                wrote on last edited by
                #10

                Nice answer. +5 can I suggest that you try to format your code so that it is easier to read? i.e.

                SELECT DISTINCT(col1)
                FROM t1
                GROUP BY col1,col2
                HAVING COUNT(col1) < 2

                Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch

                1 Reply Last reply
                0
                • B Bernhard Hiller

                  Arun's answer is clearly different from Jammo's. And Jammo's SQL statement fails with an error message.

                  M Offline
                  M Offline
                  Mycroft Holmes
                  wrote on last edited by
                  #11

                  My bad - I did not look close enough at the answer.

                  Never underestimate the power of human stupidity RAH

                  1 Reply Last reply
                  0
                  • V Vipul Mehta

                    I have 2 columns (Account Number & State) with follwing set of records in my table Acc No State 1001 WA 1002 NY 1002 NY 1002 NY 1003 CA 1003 CA 1001 CA 1002 NY I want to pull such Account Numbers that has multiple states associated with that account. Looking at the existing records, output should be as shown below 1001 1002 What query should I write to get this result set?

                    Regards, Vipul Mehta

                    N Offline
                    N Offline
                    Niju1
                    wrote on last edited by
                    #12

                    select [Acc No],count(*) from table group by [Acc No] having count(*)>1

                    1 Reply Last reply
                    0
                    • V Vipul Mehta

                      I have 2 columns (Account Number & State) with follwing set of records in my table Acc No State 1001 WA 1002 NY 1002 NY 1002 NY 1003 CA 1003 CA 1001 CA 1002 NY I want to pull such Account Numbers that has multiple states associated with that account. Looking at the existing records, output should be as shown below 1001 1002 What query should I write to get this result set?

                      Regards, Vipul Mehta

                      L Offline
                      L Offline
                      Lost User
                      wrote on last edited by
                      #13

                      SELECT DISTINCT A.Acc_No,count(*)
                      FROM [Test].[dbo].[Table_2] A
                      JOIN [Test].[dbo].[Table_2] B
                      on A.Emp_state = B.Emp_state
                      group by A.Acc_No having COUNT(*)>1

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups