Bene, devo ammettere che mi ci è voluto un po' per capire cosa stai chiedendo. Table2 ha 7 colonne da s0 a s6 e si desidera ottenere il valore dalla colonna corrispondente alla data. Sì?
Quindi, ovviamente usando
SELECT CURRENT_DATE(), s2
ti dà il contenuto di s2, mentre
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
ti dà 's2'. Sarebbe orribile se così non fosse. Ti aspetti davvero che il DBMS calcoli un valore e quindi controlli se quel valore corrisponde al nome di una colonna? Allora
select name, job from person;
selezionerebbe il nome e il lavoro della persona nella maggior parte dei casi, ma per la persona denominata Job otterresti invece il lavoro due volte. Vedi che questo non si può desiderare, vero?
Quindi controlla invece il risultato dell'espressione e leggi dalla colonna corrispondente:
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;