2013-05-23 2 views
0

Я новичок в SQL и пытаюсь пересмотреть сценарий Create View, чтобы добавить новый столбец из набора результатов запроса выбора. Я немного искал это, но не видел хорошего пример.Создать столбец представлений SQL из набора результатов

Вот оператор выбора:

select lease_id, year(posting_date) as years1, SUM(amount) as Annual 
from la_tbl_lease_projection 
group by year(posting_date), lease_id 
order by lease_id 

Усложняющим фактор это. Годовой столбец в результирующем наборе представляет собой годовую сумму расходов для lease_id. Однако в представлении, в котором я добавляю столбец, расходы перечисляются ежемесячно. Таким образом, lease_id 100001 имеет 12 строк в 2010, 2011 и т. Д. Я хочу, чтобы в представлении новый столбец отображал годовую сумму по каждой из 12 месячных позиций. Новая годовая колонка должна находиться справа от столбца суммы, и каждая строка должна содержать сумму столбца суммы за этот год. например:

Lease_id  Posting_Date   Amount  Annual 

100001  2010-01-01    $25   $300 

100001  2010-02-01    $25   $300 

etc............... 

Вид, который я добавляю, является достаточно сложным соединением и объединением из нескольких таблиц. Вместо создания новой таблицы для моего набора результатов я хотел бы получить к ней доступ с помощью хранимой процедуры, если не будет лучшего варианта. MSDN говорит, что временные таблицы и переменные таблицы не работают в представлениях, поэтому это не вариант.

Я думаю, что это можно сделать что-то вроде «когда лет1 = лет1 И lease_id = lease_id затем [Годовой] = ResultSet общее, но не могу показаться, чтобы визуализировать его. Заранее спасибо за ваш вклад.

ответ

0

Поскольку вы смотрели на MSDN, я предполагаю, что SQL Server для этого ответа;

Чтобы получить годовую колонку, что это по летняя сумма сумм, вы можете использовать SUM() OVER();

SELECT *, SUM(Amount) OVER (PARTITION BY YEAR(Posting_Date)) Yearly 
FROM la_tbl_lease_projection; 

An SQLfiddle to test with.

+1

Это сработало для меня! Благодаря! Я добавил lease_id в раздел «Так, чтобы он суммировал суммы в год и сдавал в аренду, и он работает как шарм». Мне все еще нужно сделать это в представлении, но я должен это понять. – user2414509

0

Я думаю, что производная таблица будет делать трюк для вас что-то вроде:

select blah, blah2, blah3, ..., a.annual 
from 
<Long complicated set of joins> 
join 
    (select lease_id, year(posting_date) as years1, SUM(amount) as Annual 
    from la_tbl_lease_projection 
    group by year(posting_date), lease_id 
    order by lease_id) a 
    on sometable.lease_id = a.lease_id and year(sometable .posting_date) = a.years1 
Where <complex where conditions> 
Смежные вопросы