база sql2005,строк в таблице порядка 500 000 записей.Реально колонок больше(не буду говорить,будете смеяться)
Dt | Price | Type | 1 | 100 | 1 | 2 | 200 | 1 | 3 | 300 | 1 | 1 | 400 | 2 | 2 | 500 | 2 | 3 | 600 | 2 | 1 | 700 | 3 | 2 | 800 | 3 | 3 | 900 | 3 |
|
Что я делаю.
1.Создаю временную таблицу с нужными мне колонками(раньше вместо временный использовал with, но потом оказалось,что при обращение к нему каждый раз запрос выполняеться заново,поэтому переделали так).
2.Заполняю временную таблицу только нужными мне данными.
3.Формирую запрос,который потом надо отобразить.
Сам запрос
select Dt,Price,Type into #TTT from MyTable where 1 = 0
insert #TTT select Dt,Price,Type from MyTable
where ....
select Dt xx,
avg(t1.yy) as col1,
avg(t2.yy) as col2,
avg(t3.yy) as col3
from #TTT
left join (select avg(Price) as yy,Dt as XX from #TTT where Type=1 group by Dt) t1 on #TTT.Dt=t1.XX
left join (select avg(Price) as yy,Dt as XX from #TTT where Type=2 group by Dt) t2 on #TTT.Dt=t1.XX
left join (select avg(Price) as yy,Dt as XX from #TTT where Type=3 group by Dt) t3 on #TTT.Dt=t1.XX
group by Dt order by Dt
Как можно оптимизировать?