Bem, devo admitir que demorei um pouco para entender o que você está perguntando. A Tabela2 tem 7 colunas s0 a s6 e você deseja obter o valor da coluna correspondente à data. Sim?
Então, é claro, usando
SELECT CURRENT_DATE(), s2
fornece o conteúdo de s2, enquanto
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
dá-lhe 's2'. Seria horrível se não. Você realmente espera que o DBMS calcule um valor e, em seguida, verifique se esse valor corresponde a um nome de coluna? Então
select name, job from person;
selecionaria o nome e o trabalho da pessoa na maioria dos casos, mas para a pessoa chamada Job você obteria o trabalho duas vezes. Você vê que isso não pode ser desejado, certo?
Portanto, verifique o resultado da sua expressão e leia a coluna correspondente:
insert into table_1 (datum, comment)
select
current_date(),
case dayofweek(current_date()) - 1
when 0 then s0
when 1 then s1
when 2 then s2
when 3 then s3
when 4 then s4
when 5 then s5
when 6 then s6
end
from table_2 where id = 12345;