Given a SQL table with an arbitrary number of records (X) and an arbitrary number of columns (Y)
| RecordID | Column1 | Column 2 | Column 3 | ... | Column Y |
|---|---|---|---|---|---|
| 1 | Value11 | Value12 | Value13 | ... | Value1Y |
| 2 | Value21 | Value22 | Value23 | ... | Value2Y |
| ... | ... | ... | ... | ... | ... |
| X | ValueX1 | ValueX2 | ValueX3 | ... | ValueXY |
Is it possible to construct a query that reduces the data to a simple three-column lookup of ID, column name and value, as follows :
| RecordID | ColumnName | Value |
|---|---|---|
| 1 | Column1 | Value11 |
| 1 | Column2 | Value12 |
| 1 | Column3 | Value13 |
| ... | ... | ... |
| 1 | ColumnY | Value1Y |
| 2 | Column1 | Value21 |
| 2 | Column2 | Value22 |
| 2 | Column3 | Value23 |
| ... | ... | ... |
| 2 | ColumnY | Value2Y |
| ... | ... | ... |
| X | Column1 | ValueX1 |
| X | Column2 | ValueX2 |
| X | Column3 | ValueX3 |
| ... | ... | ... |
| X | ColumnY | ValueXY |
Conservation of the data type is obviously not a concern, a simple text representation on each case would be sufficient?
(I'm sure this is answered elsewhere but I don't know what this would be "called" so I'm having trouble finding out how to achieve it...)