I am trying to turn a table 90 degrees: make columns rows. No PIVOT is allowed since PIVOT requires aggregate functions.
Example:
I have a table with the columns:
ID int,
ISO char(2),
Text varchar(255).
So I have this:
ID ISO Text -- --- ---- 1 DE Auto 2 EN Car
I'd like to get the following:
ID EN DE -- --- ---- 1 Car Auto
How do you accomplish that?
Query without a PIVOT even though other answers prove you can use a PIVOT :)
If you try this solution and get a syntax error try setting the compatability mode of your database via
This will set the compatability to SQLServer 2005 and the above queries will execute w/o a syntax error.
I found the solution as the following:
It's possible to use PIVOT with MAX aggregating function over the text.
Since you explicitly asked for a non-pivot solution: this should work, if you know which ISOs you will have in the rows. I called the table "Test".
This answer is really frantisek's, I'm just copying here to correct the mistake (I can't edit directly).
Basically, you use that solution, with a tweak:
This will get the content into a single row. Also, it drops the ID, since it doesn't make sense if you want a single row (there is no logic to indicate what to do with it when combining into a single row).
Also, the assumption is made that the values in the ISO column are unique, otherwise, this will lose data due to the
MAX
aggregate.