Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 20:12   #21
ТипичныйСтудент
Форумчанин
 
Аватар для ТипичныйСтудент
 
Регистрация: 09.04.2013
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение

Не понял... К чему этот from?

Но это не означает что нужно результаты этого запроса хранить в БД
за условия спасибо!)
from к тому, чтобы t1 обозначить, иначе ругается)
Есть задача - реши ее!
ТипичныйСтудент вне форума Ответить с цитированием
Старый 30.06.2013, 20:19   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Впервые вижу from в update
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2013, 20:49   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Stilet, есть такая фишка, тоже не нравится, но тем не менее http://msdn.microsoft.com/ru-ru/library/ms177523.aspx
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.07.2013, 11:15   #24
ТипичныйСтудент
Форумчанин
 
Аватар для ТипичныйСтудент
 
Регистрация: 09.04.2013
Сообщений: 110
По умолчанию

и снова здрасти.
вот код:
Код:
declare @tbl table (dt datetime, pr int, obj int, kolvo numeric(18,6), cena money, summa money, sredcena money, ostatok numeric(18,6));
declare @a int;
insert into @tbl values('01.01.13', 1, 1, 10, 100, null, null, null)
insert into @tbl values('03.01.13', 1, 1, 20, 200, null, null, null)
insert into @tbl values('05.01.13', -1, 1, 15, null, null, null, null)
insert into @tbl values('06.02.13', 1, 1, 10, 300, null, null, null)
insert into @tbl values('07.02.13', -1, 1, 25, null, null, null, null)
insert into @tbl values('08.02.13', 1, 1, 10, 500, null, null, null)
insert into @tbl values('09.02.13', -1, 1, 10, null, null, null, null)
UPDATE @tbl SET summa = cena*kolvo;

update @tbl set  sredcena = (select sum(t2.summa)/sum(t2.kolvo) from @tbl t2  where t2.obj = t1.obj and dt between '01.01.2013' and '09.02.2013' group by t2.obj)
from @tbl t1 where t1.pr=-1;
update @tbl set  sredcena = (select sum(t2.summa)/sum(t2.kolvo) from @tbl t2  where t2.obj = t1.obj and dt between '01.01.2013' and '09.02.2013' group by t2.obj)
from @tbl t1 where t1.pr=1;

select * from @tbl
у нас на 9-е число (последнее) средняя цена получается 130, а должна быть 500, т.к. на это число мы весь предыдущий товар списали и получили новую поставку
и вот ка с этим быть то??? т.е. все же нужно высчитывать остатки после списания.....
Есть задача - реши ее!
ТипичныйСтудент вне форума Ответить с цитированием
Старый 01.07.2013, 11:19   #25
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Суммарные стоимость и количество нужно то с учетом знака считать - приход в плюс, расход в минус. Не? И в этой структуре все равно не получится у вас нормально все реализовать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.07.2013, 11:45   #26
ТипичныйСтудент
Форумчанин
 
Аватар для ТипичныйСтудент
 
Регистрация: 09.04.2013
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Суммарные стоимость и количество нужно то с учетом знака считать - приход в плюс, расход в минус. Не? И в этой структуре все равно не получится у вас нормально все реализовать
да)
а что если как-то так?
Код:
UPDATE @tbl SET ostatok = (case when pr=1  then ostatok + kolvo else ostatok - kolvo end)
OUTPUT Inserted.ostatok WHERE ostatok = 0;
помогите эту строку до ума довести
____________
это вот этот пример со справки:
Использование выражения CASE в инструкции UPDATE
В следующем примере выражение CASE используется в инструкции UPDATE, чтобы определить значение, установленное в столбце VacationHours для сотрудников, у которых столбец SalariedFlag имеет значение 0. Если при вычитании 10 часов из VacationHours получается отрицательное значение, VacationHours увеличивается на 40 часов. В противном случае значение VacationHours увеличивается на 20 часов. С помощью предложения OUTPUT отображаются исходная и обновленная продолжительности отпуска.
Код:
Transact-SQL
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET VacationHours = 
    ( CASE
         WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
         ELSE (VacationHours + 20.00)
       END
    )
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue, 
       Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
Есть задача - реши ее!

Последний раз редактировалось ТипичныйСтудент; 01.07.2013 в 11:48.
ТипичныйСтудент вне форума Ответить с цитированием
Старый 01.07.2013, 11:49   #27
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чем не нравится pr*kolvo? Оно и даст учет знака, ну если только у pr возможны только значения -1 и 1. И не надо кейса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.07.2013, 12:22   #28
ТипичныйСтудент
Форумчанин
 
Аватар для ТипичныйСтудент
 
Регистрация: 09.04.2013
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А чем не нравится pr*kolvo? Оно и даст учет знака, ну если только у pr возможны только значения -1 и 1. И не надо кейса
мм просто не сообразила если честно...
тогда что-то вроде:
Код:
update @tbl set  sredcena = (select sum(t2.summa)/sum(t2.pr*t2.kolvo) from @tbl t2  where t2.obj = t1.obj  group by t2.obj)
from @tbl t1 ;
ошибка деления на ноль
не ну логично конечно
тогда можно это в if засунуть (sum(t2.pr*t2.kolvo)!=0)...
_______
а что если как-то так??
Код:
set @a = (select sum(pr*kolvo) from @tbl);
if @a> 0 
	begin
		update @tbl set  sredcena = (select sum(t2.summa)/sum(@a) 
								from @tbl t2  where t2.obj = t1.obj  group by t2.obj)
								from @tbl t1
	end;
	else
	update @tbl set  sredcena = 0;
бррррррр
бред=/ %)
Есть задача - реши ее!

Последний раз редактировалось ТипичныйСтудент; 01.07.2013 в 13:59.
ТипичныйСтудент вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет стоимости экскурсии danichca Microsoft Office Excel 5 15.02.2013 15:51
расчет стоимости или средневзвешенной цены в сводной таблице Максим1981 Microsoft Office Excel 2 08.02.2013 11:25
Расчет стоимости продукции. (Отправка по email) VovaNorris PHP 0 23.09.2012 15:11
Расчет стоимости nevka Microsoft Office Access 2 18.09.2012 02:09
расчет стоимости на радиокнопках Valuh JavaScript, Ajax 0 17.09.2011 00:05