Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
Никак не могу понять. Коротко: есть таблица
Поля: Сотрудник, Период (месяц), Вид льготы, Сумма (за месяц)

Необходимо получить таблицу вида
Сотрудник, Льгота, Сумма с нач. года.

Вопрос: можно ли получить одним запросом данную таблицу, без курсоров и т.д. "Сумма с нач. года" - вот что смущает. Натолкните на мысль, подайте идею.... Спасибо.
31 авг 11, 17:06    [11207802]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
vic_brest
Необходимо получить таблицу вида
Сотрудник, Льгота, Сумма с нач. года.
С начала какого именно года?

Получить, скорее всего можно одним запросом, но это никакого отношения к вычисляемым полям иметь не будет.
31 авг 11, 17:10    [11207829]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
Простите, если не так выразился. Начало года я могу определить из периода, но это для "теоретического" решения задачи, наверное неважно. Мне главное понять принцип как это сделать.
31 авг 11, 17:15    [11207852]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
vic_brest,
почитайте FAQ
31 авг 11, 17:23    [11207892]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
vic_brest,
что у вас за данные в столбце Период (месяц)?
ссылка на нарсат итог - это я поторопился)))
вам, наверно, надо просто изучить группировку
31 авг 11, 17:28    [11207914]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
s.w.a.n.
vic_brest,
почитайте FAQ
Там порядок апдейта неопределён.
Так что не всё так хорошо.
31 авг 11, 17:29    [11207923]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
с начала года по месяцам или просто за весь год?

     create table #t1(Name varchar(20), period date, lgota int, summa money)
      
      insert into #t1 (Name, period, lgota, summa) values ('вася', '2009-01-11', 1, 220)
      insert into #t1 (Name, period, lgota, summa) values ('вася', '2009-02-11', 2, 320)
      insert into #t1 (Name, period, lgota, summa) values ('вася', '2009-03-11', 1, 520)
      insert into #t1 (Name, period, lgota, summa) values ('вася', '2009-04-11', 2, 620)
      
      insert into #t1 (Name, period, lgota, summa) values ('петя', '2009-05-11', 1, 290)
      insert into #t1 (Name, period, lgota, summa) values ('петя', '2010-06-11', 3, 260)
      insert into #t1 (Name, period, lgota, summa) values ('петя', '2009-07-11', 3, 310)
      insert into #t1 (Name, period, lgota, summa) values ('петя', '2009-08-11', 1, 120)
      
      select t.Name, t.lgota, 
         sum(summa) from #t1 t where DATEPART(yy,period) = 2009  group by  t.Name, t.lgota, DATEPART(yy,period)
          
      drop table #t1
      
31 авг 11, 17:34    [11207962]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
s.w.a.n.
vic_brest,
что у вас за данные в столбце Период (месяц)?
ссылка на нарсат итог - это я поторопился)))
вам, наверно, надо просто изучить группировку

Периоды - Январь 2011, Февраль 2011, Март 2009 и т.д.
з.ы. Я тут немного неверную таблицу дал. :)
Вот такая должна быть

Сотрудник - ЛЬгота - Сумма за период - Сумма с нач. года
31 авг 11, 17:36    [11207968]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
[quot vic_brest]
s.w.a.n.
Периоды - Январь 2011, Февраль 2011, Март 2009 и т.д.
з.ы. Я тут немного неверную таблицу дал. :)
Вот такая должна быть
Сотрудник - ЛЬгота - Сумма за период - Сумма с нач. года

мда, нарастающий итог таки понадобится.
что за тип данных? столбец: Январь 2011, Февраль 2011, Март 2009 и т.д
31 авг 11, 17:47    [11208069]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
что-то у меня с редактированием сообщений)))
31 авг 11, 17:50    [11208099]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
s.w.a.n.,

Тип данных - число ( id_period) - ссылка на таблицу периодов.
31 авг 11, 17:51    [11208112]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
Окончательный вариант таблицы

Сотрудник - Льгота - Период - Сумма за период - Сумма С Нач. года.


Извините, если что.
31 авг 11, 17:53    [11208125]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
о новые неизвестные в уравнении!
сразу весь контекст задачи!
31 авг 11, 17:55    [11208134]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
vic_brest
s.w.a.n.,
Тип данных - число ( id_period) - ссылка на таблицу периодов.

а подробнее нельзя?
надо ж вытащить номера месяцев и год, чтобы нарастающий итог в каждом году считался верно
31 авг 11, 17:56    [11208144]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
vic_brest
Окончательный вариант таблицы

Сотрудник - Льгота - Период - Сумма за период - Сумма С Нач. года.


Извините, если что.


не плохо бы привести пример кода таблицы и данных,
а также желаемого результата
31 авг 11, 17:56    [11208145]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
J.d,

В принципе, надо сделать отчетец, по форме которая дана на одно сообщение выше. Есть таблица с цифрами (неупорядоченная) вида примерно такого : Какому сотруднику в каком периоде какая льгота предоставлялась и в какой сумме....вот.
31 авг 11, 17:57    [11208151]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
vic_brest,

В таблице периодов есть поле Год.
31 авг 11, 17:58    [11208161]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
я бы написал функцию или запихнул вычисления в cross apply.
но наверно мои слова вам ничего не скажут так же как и ваши нам =)
31 авг 11, 18:00    [11208184]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
vic_brest
Никак не могу понять. Коротко: есть таблица
Поля: Сотрудник, Период (месяц), Вид льготы, Сумма (за месяц)

Необходимо получить таблицу вида
Сотрудник, Льгота, Сумма с нач. года.

Вопрос: можно ли получить одним запросом данную таблицу, без курсоров и т.д. "Сумма с нач. года" - вот что смущает. Натолкните на мысль, подайте идею.... Спасибо.


Если вам нужен дельный совет, давайте начнем с начала, с формулировки...
Какие у вас таблицы, какие столбцы, какие типы данных? Или мы должны все это угадывать?
31 авг 11, 18:05    [11208227]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
согласен! мы не телепаты.
четкое дано! четкое требуется найти..
31 авг 11, 18:07    [11208247]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
vic_brest
Я тут немного неверную таблицу дал. :)


Но главный ваш фэйл даже не в этом. А в том, что топик Рекомендации по оформлению сообщений в форуме не был вами ни прочитан, ни уж тем более выполнен...
31 авг 11, 18:23    [11208381]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
Привет. Это снова я :) Вы уж простите меня, если что не так. Почитал рекомендации. Попробую дать развернутую информацию. Есть база на MS SQL 2000. Там есть следующие таблицы
1) Periods - периоды (месяцы). Поля id (int), name (varchar), year (int), date_period (Date) (вчера этого поля не было, я его добавил)
2) Lgota- Виды льгот. Поля id (int), name (varchar)
3) Emp - Сотрудники. Поля id (int), name (varchar)
3) Summa_lgot. -Суммы льгот. Поля id (int), period_id (int), emp_id (int), lgota_id (int), summ (int).

Необходимо получить отчет типа

Сотрудник - Льгота - Период - Сумма за период - Сумма с нач года.

Например

Иванов И.И. - Льгота №1 - Февраль 2011 - 50 000 - 50 000
Иванов И.И. - Льгота №1 - Апрель 2011 - 60 000 - 110 000
Иванов И.И. - Льгота №2 - Январь 2011 - 70 000 - 70 000
Иванов И.И. - Льгота №2 - Июль 2011 - 80 000 - 150 000

Хотелось бы получить все это один запросом, без функций, курсоров и т.д. Спасибо, и еще раз извините.
1 сен 11, 10:10    [11210251]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
vic_brest,
year - неудачное имя поля! переименовано в yearX
приблизительный вариант набросал, надеюсь сможете допилить под свои нужды
select t1.emp_id, t1.lgota_id, t1.yearX, t1.dp, t1.summ, sum(t2.summ) XSUM
(
select emp_id, lgota_id, yearX, date_period dp, summ  
from Summa_lgot s join Periods p on s.period_id = p.id 
) t1
join
(
select emp_id, lgota_id, yearX, date_period dp, summ  
from Summa_lgot s join Periods p on s.period_id = p.id
) t2
on t1.emp_id=t2.emp_id
and t1.lgota_id=t2.lgota_id
and t1.yearX=t2.yearX
and t1.dp>=t2.dp
group by t1.emp_id, t1.lgota_id, t1.yearX, t1.dp, t1.summ
1 сен 11, 14:16    [11212471]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
s.w.a.n.,

Огромное тебе спасибо, что возишься со мной! Буду пилить!!!!
1 сен 11, 15:56    [11213567]     Ответить | Цитировать Сообщить модератору
 Re: Вычисляемые поля  [new]
vic_brest
Member

Откуда:
Сообщений: 10
s.w.a.n.
Все работает как надо! Спасибо дружище, что не остался в стороне!!!
1 сен 11, 17:40    [11214577]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить