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

Откуда:
Сообщений: 85
Суть В следующем

row_id sob kol_vo stoimostj Sebest
1 prihod 10 100 0
2 rashod 2 0 0
3 prihod 20 220 0
4 rashod 12 0 0
5 rashod 6 0 0

Надо получить вот так

row_id sob kol_vo stoimostj Sebest
1 prihod 10 100 10
2 rashod -2 -20 10
3 prihod 20 220 10,714
4 rashod -12 -128,5 10,718
5 rashod -6 -64,308 10,718

Т.е. Стоимость Расхода равна Сумме всех Стоимостей До этого и Поделить на Суммы всех Количеств.

С помощью Курсора я это как-то сделал - но работает Супер МЕДЛЕННО!!!

Может Можно как-то это сделать с помощб запроса....

По сути вопрос такой - Как Сложить те поля(Stoimostj) которые расчитались в запросе????
22 дек 04, 21:50    [1202239]     Ответить | Цитировать Сообщить модератору
 Re: Как Вычислить Вычесленное поле???  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
ZoomNews
Суть В следующем

row_id sob kol_vo stoimostj Sebest
1 prihod 10 100 0
2 rashod 2 0 0
3 prihod 20 220 0
4 rashod 12 0 0
5 rashod 6 0 0

Надо получить вот так

row_id sob kol_vo stoimostj Sebest
1 prihod 10 100 10
2 rashod -2 -20 10
3 prihod 20 220 10,714
4 rashod -12 -128,5 10,718
5 rashod -6 -64,308 10,718

Т.е. Стоимость Расхода равна Сумме всех Стоимостей До этого и Поделить на Суммы всех Количеств.

А почему в первом случае стоимость ненулевая, если до него ничего не было?
Примерно так (осн.идея):
SELECT t.row_id,
CASE t.sob WHEN 'prihod' THEN t.kol_vo ELSE -1*t.kol_vo END AS kol_vo,
CASE t.sob WHEN 'prihod' THEN t.stoimostj ELSE -1*t.stoimostj END AS stoimostj,
(SELECT SUM(stoimostj)/SUM(kol_vo) FROM Tabl WHERE row_id  < t.row_id)
AS Sebest
FROM Tabl t
23 дек 04, 03:03    [1202517]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить