Even though I and Zohar do not understand why do exists a table with a column for each day...
For MySQL
Please, consider the solution in this fiddle: https://www.db-fiddle.com/f/7nxjo6hGRsX3Hn8GNqXBuC/0
create table dummy(
id int,
--
relevant_data_01 varchar(255),
relevant_data_02 varchar(255),
--
`20200101` int,
`20200102` int,
`20200103` int
);
insert into dummy values(1, 'a', 'b', 1, 2, 3);
select
concat(
'
select *
from (
',
group_concat(
concat('
select
id, relevant_data_01, relevant_data_02,
''', column_name, ''' as date_key,
`', column_name, '` as date_value
from dummy')
separator
'
union all
'
),
'
) d'
)
into @sql
from INFORMATION_SCHEMA.columns
where
table_name = 'dummy'
and column_name like '2020%';
PREPARE stmt FROM @sql;
EXECUTE stmt;
For SQL Server
Editing the solution, for SQL Server I provided this other fiddle: http://sqlfiddle.com/#!18/f7874c/14
create table dummy(
id int,
--
relevant_data_01 varchar(255),
relevant_data_02 varchar(255),
--
[20200101] int,
[20200102] int,
[20200103] int
)
insert into dummy values(1, 'a', 'b', 1, 2, 3)
declare @sql nvarchar(max) = ''
select
@sql =
@sql +
case
when @sql = '' then ''
else char(13) + char(10) + 'union all' + char(13) + char(10)
end + '
select
id, relevant_data_01, relevant_data_02,
''' + col.name + ''' as date_key,
[' + col.name + '] as date_value
from dummy
'
from
sys.columns col
where
col.object_id = OBJECT_ID('dummy')
and col.name like '2020%'
execute sp_executesql @sql