Şöyle bir Öneride bulunayım.
Biraz uğraşmanız gerekebilir.
Buradaki Durumunuz şöyle çözülebilir.
şimdi colonlarınız pivot halinde gitmekte onun için öncelikle unpivot yapmanız gerek
select t.id,
c.col,
case c.col
when 'a' then a
when 'b' then b
when 'c' then c
end as data
from yourtable t
cross join
(
select 'a' as col
union all select 'b'
union all select 'c'
) c
kolon isimlerini bildiğini ve sabit olduğu için sadece
union all yerlerine kolon isimlerini yazarak öncelikle yatayda olan veriyi dikey şekilde çekiniz
MySql de Temp table varmı biliyorum varsa
select t.id,
c.col,
case c.col
when 'a' then a
when 'b' then b
when 'c' then c
end as data
from yourtable t
cross join
(
select 'a' as col
union all select 'b'
union all select 'c'
) c
from yourtable yerinden önceye INTO #TEMP yazarak sanalda bir tabloya atınız Eğer temp yoksa
CTE kullanın o da yoksa Fizksel olarak bir tabloya atın
tabloya attıktan sonra bu kez sizin
gun1 gun2 olarak gelecek kolonlarınız bu kez
gun1
gun2
gun3 olarak gelecektir tabiki yıllarda o şekilde
yani Select * from #temp yazdığınız zaman
ID ADI YIL GUNLER
1 deneme 2019 gun1
Şeklinde gelecektir bundan sonra
select * from #temp where GUN between gun1 and gun30 diyerek çekmiş olursunuz
İnşallah anlatabilmişimdir
Unutmadan Temp tabloda olsa fiziksel bir tabloda olsa
select cümlenizin en başına
Drop Table #temp yada fiziksel tablo adını yazmanız gerekir.
Bunun sonrasında yine yatayda görmek istiyorum diyorsan
yazdığın ve kısıtladığın yanı betweenlediğin tabloyu yeniden pivot olarak yan yana yazdırman gerekir