0

Here is an example table:

--|--id--|--value--|
--|  1   |   v1    |
--|  1   |   v2    |
--|  1   |   v3    |
--|  1   |   v4    |
--|  2   |   v1    |
--|  2   |   v2    |
--|  2   |   v3    |
--|  3   |   v1    |
--|  3   |   v2    |
--------------------

The result of my query should be something like:

--|--id--|--value1-|--value2-|--value3-|--value4-|
--|  1   |   v1    |   v2    |   v3    |   v4    |
--|  2   |   v1    |   v2    |   v3    |   NULL  |
--|  3   |   v1    |   v2    |   NULL  |   NULL  |
--------------------------------------------------

Is this possible using SQL?

kmdhrm
  • 505
  • 1
  • 6
  • 17
  • This sounds like you're trying to [pivot](http://stackoverflow.com/questions/7674786/mysql-pivot-table) your results. – ryanyuyu Jan 15 '15 at 15:54
  • 1
    Another example of pivoting: [MySQL pivot table query with dynamic columns](http://stackoverflow.com/questions/12598120/mysql-pivot-table-query-with-dynamic-columns). Did you do a search before asking the question? – Bernd Linde Jan 15 '15 at 15:56

1 Answers1

0

Use conditional Aggregate

SELECT id,
       Max(CASE
             WHEN value = 'v1' THEN Value
           END) Value1,
       Max(CASE
             WHEN value = 'v2' THEN Value
           END) Value2,
       Max(CASE
             WHEN value = 'v3' THEN Value
           END) Value3,
       Max(CASE
             WHEN value = 'v4' THEN Value
           END) Value4
FROM   yourtable 
Pரதீப்
  • 91,748
  • 19
  • 131
  • 172