Search code examples
sqlsql-serversql-server-2005

SQL - Take data from multiple rows into single row


I have a table that looks similar to this here:

SetId       AppCode       AppEventId       EventId       FieldId       ValueData
2012/2013     1000         361616             16            1            UNI     
2012/2013     1000         361616             16            2            Isolation
2012/2013     1000         361616             16            3            DN
2012/2013     1050         378194             16            1            BUL
2012/2013     1050         378194             16            2            Isolation
2012/2013     1050         378194             16            3            RD

I would like to able to combine all that data when they have the same AppCode.

Which would look like this:

SetId       AppCode       AppEventId       EventId       ValueData1      ValueData2      ValueData3
2012/2013     1000         361616             16            UNI            Isolation        DN
2012/2013     1050         378194             16            BUL            Isolation        RD

Solution

  • Try this

      SELECT SetId, AppCode, AppEventId, EventId 
      ,max(CASE WHEN FieldId = 1 THEN ValueData END) AS ValueData1
      ,max(CASE WHEN FieldId = 2 THEN ValueData END) AS ValueData2
      ,max(CASE WHEN FieldId = 3 THEN ValueData END) AS ValueData3
       FROM Table_Name 
       GROUP BY SetId,AppCode,AppEventId,EventId