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. Single row for multiple results

Single row for multiple results

Scheduled Pinned Locked Moved Database
tutorial
14 Posts 9 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 vanikanc

    Hello, I would like to show data as a single row instead of multiple rows. For example, a certain user has two status associated, like maybe "Pending Approval" and "Waiting Email Verfication". Instead of showing these statuses on two different rows, I would like to show as one row. Currently, John Smith Pending Approval John Smith Waiting Email Verfication Should be John Smith Pending Approval, Waiting Email Verfication There could such multiple states for this user, but all show in one row. Thanks so much for your time!

    T Offline
    T Offline
    Tim Carmichael
    wrote on last edited by
    #5

    You can either build your state list directly in a stored procedure, or create a function that will build it for you. I encountered a similar situation yesterday: for a given item, multiple sources of data. I created a function to concatenate the items, comma delimited, and used the function in the query to return all of the data in a single row. Tim

    V 1 Reply Last reply
    0
    • T Tim Carmichael

      You can either build your state list directly in a stored procedure, or create a function that will build it for you. I encountered a similar situation yesterday: for a given item, multiple sources of data. I created a function to concatenate the items, comma delimited, and used the function in the query to return all of the data in a single row. Tim

      V Offline
      V Offline
      vanikanc
      wrote on last edited by
      #6

      My apologizes. This link worked perfectly,

      http://www.sqlservercentral.com/scripts/Miscellaneous/32004/[^]

      , using COALESE

      1 Reply Last reply
      0
      • V vanikanc

        Hello, I would like to show data as a single row instead of multiple rows. For example, a certain user has two status associated, like maybe "Pending Approval" and "Waiting Email Verfication". Instead of showing these statuses on two different rows, I would like to show as one row. Currently, John Smith Pending Approval John Smith Waiting Email Verfication Should be John Smith Pending Approval, Waiting Email Verfication There could such multiple states for this user, but all show in one row. Thanks so much for your time!

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

        This should help.

        DECLARE @Col1 varchar(max)

        SELECT @Col1 = COALESCE(@Col1 + ', ', '') + CAST(Col1 AS varchar(100))
        FROM Table1
        WHERE (................)

        SELECT @EmployeeList

        1 Reply Last reply
        0
        • V vanikanc

          Hello, I would like to show data as a single row instead of multiple rows. For example, a certain user has two status associated, like maybe "Pending Approval" and "Waiting Email Verfication". Instead of showing these statuses on two different rows, I would like to show as one row. Currently, John Smith Pending Approval John Smith Waiting Email Verfication Should be John Smith Pending Approval, Waiting Email Verfication There could such multiple states for this user, but all show in one row. Thanks so much for your time!

          P Offline
          P Offline
          PIEBALDconsult
          wrote on last edited by
          #8

          You can write your own aggregates with CLR Stored Procedures. CLR Stored Procedure and Creating It Step by Step[^] http://msdn.microsoft.com/en-us/library/ms190790.aspx[^] But I don't recommend it.

          1 Reply Last reply
          0
          • V vanikanc

            Hello, I would like to show data as a single row instead of multiple rows. For example, a certain user has two status associated, like maybe "Pending Approval" and "Waiting Email Verfication". Instead of showing these statuses on two different rows, I would like to show as one row. Currently, John Smith Pending Approval John Smith Waiting Email Verfication Should be John Smith Pending Approval, Waiting Email Verfication There could such multiple states for this user, but all show in one row. Thanks so much for your time!

            N Offline
            N Offline
            Niladri_Biswas
            wrote on last edited by
            #9

            Assuming Sql Server 2005 and above, try this

            Declare @t table([Name] varchar(20),[Status] varchar(50))
            insert into @t values
            ('John Smith','Pending Approval'),('John Smith','Waiting Email Verfication')
            --,('User2','Pending Approved'),('User2','Sent email'),('User2','Other activity')
            --Select * from @t

            select Result = [Name] + ' ' + Stuff((Select ',' + CAST([Status] as varchar(100)) from @t t2 where t1.[Name]
            = t2.[Name] for XML Path('')),1,1,'')
            from @t t1
            group by t1.[Name]

            /*
            Result

            John Smith Pending Approval,Waiting Email Verfication
            */

            Niladri Biswas

            _ S 2 Replies Last reply
            0
            • N Niladri_Biswas

              Assuming Sql Server 2005 and above, try this

              Declare @t table([Name] varchar(20),[Status] varchar(50))
              insert into @t values
              ('John Smith','Pending Approval'),('John Smith','Waiting Email Verfication')
              --,('User2','Pending Approved'),('User2','Sent email'),('User2','Other activity')
              --Select * from @t

              select Result = [Name] + ' ' + Stuff((Select ',' + CAST([Status] as varchar(100)) from @t t2 where t1.[Name]
              = t2.[Name] for XML Path('')),1,1,'')
              from @t t1
              group by t1.[Name]

              /*
              Result

              John Smith Pending Approval,Waiting Email Verfication
              */

              Niladri Biswas

              _ Offline
              _ Offline
              _Zorro_
              wrote on last edited by
              #10

              STUFF is what you're looking for indeed.

              V 1 Reply Last reply
              0
              • _ _Zorro_

                STUFF is what you're looking for indeed.

                V Offline
                V Offline
                vanikanc
                wrote on last edited by
                #11

                Thanks for your responses. Instead of a comma separated list, i would like it as line breaks. I am separating the information by pipes, and later doing a replace after calling the function like below. I am doing this -- SELECT replace(DBO.fn_getAssociateComments(168), '|', char(13)+char(10)) But it is putting any line breaks??Am I missing something? Thanks a bunch!

                _ 1 Reply Last reply
                0
                • V vanikanc

                  Thanks for your responses. Instead of a comma separated list, i would like it as line breaks. I am separating the information by pipes, and later doing a replace after calling the function like below. I am doing this -- SELECT replace(DBO.fn_getAssociateComments(168), '|', char(13)+char(10)) But it is putting any line breaks??Am I missing something? Thanks a bunch!

                  _ Offline
                  _ Offline
                  _Zorro_
                  wrote on last edited by
                  #12

                  Hi, According to this stackoverflow thread [^], it should work. Don't know why it doesn't work for you... Did you try replacing CHAR(13) + CHAR(10) with "\r\n" just to try? Edit: Maybe you should take a look at this example too: [^]

                  1 Reply Last reply
                  0
                  • N Niladri_Biswas

                    Assuming Sql Server 2005 and above, try this

                    Declare @t table([Name] varchar(20),[Status] varchar(50))
                    insert into @t values
                    ('John Smith','Pending Approval'),('John Smith','Waiting Email Verfication')
                    --,('User2','Pending Approved'),('User2','Sent email'),('User2','Other activity')
                    --Select * from @t

                    select Result = [Name] + ' ' + Stuff((Select ',' + CAST([Status] as varchar(100)) from @t t2 where t1.[Name]
                    = t2.[Name] for XML Path('')),1,1,'')
                    from @t t1
                    group by t1.[Name]

                    /*
                    Result

                    John Smith Pending Approval,Waiting Email Verfication
                    */

                    Niladri Biswas

                    S Offline
                    S Offline
                    smcnulty2000
                    wrote on last edited by
                    #13

                    I keep bumping into a need for this. I'm tossing this into my code library. Very, very useful. In fact it was useful today in a problem.

                    _____________________________ Give a man a mug, he drinks for a day. Teach a man to mug...

                    1 Reply Last reply
                    0
                    • V vanikanc

                      Hello, I would like to show data as a single row instead of multiple rows. For example, a certain user has two status associated, like maybe "Pending Approval" and "Waiting Email Verfication". Instead of showing these statuses on two different rows, I would like to show as one row. Currently, John Smith Pending Approval John Smith Waiting Email Verfication Should be John Smith Pending Approval, Waiting Email Verfication There could such multiple states for this user, but all show in one row. Thanks so much for your time!

                      S Offline
                      S Offline
                      S Douglas
                      wrote on last edited by
                      #14

                      Without knowing the stucture of your tables it's kinda hard to say, but one approach could be to pivot the data into a temp table. Then you can maniulate the results as needed. http://blog.sqlauthority.com/2008/06/07/sql-server-pivot-and-unpivot-table-examples/[^]


                      Common sense is admitting there is cause and effect and that you can exert some control over what you understand.

                      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