Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется / 7 сообщений из 7, страница 1 из 1
06.10.2012, 23:16
    #37986712
sysinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
Таблица Стоимость
Код ОС | Первоначальная стоимость |Текущая (первоначальная + сумма обслуживания)
1 | 200 | первоначальная + СуммаОбслуживания где
встречается код ос )
2 | 100 | первоначальная + СуммаОбслуживания где
встречаются код ос )

Таблица Обслуживание
Код Обслуживания| Код ОС |СуммаОбслуживания
1 | 1 | 100
2 | 2 | 30
3 | 2 | 20
4 | 1 | 10
Declare @@summa money
SET select @@summa = sum(Обслуживание.суммаобслуживания) from Обслуживание inner join Стоимость on Стоимость.Код ОС = Обслуживание.Код ОС
group by Стоимость.Код ОС

сумму считает для 2ого ОС (50 прибавляет)


Пробывала курсором

Declare @@summa money;
Declare curs1 Cursor dynamic read_only for
select sum(Обслуживание.суммаобслуживания) from Обслуживание inner join Стоимость on Стоимость.Код ОС = Обслуживание.Код ОС
group by Стоимость.Код ОС
open curs1

fetch next from curs1 into @@summa
считает сумму только для 1ого Кода ОС (100+10) и прибавляет её для всех


UPDATE Стоимость = Стоимость.первоначальная +@@summa
...
Рейтинг: 0 / 0
06.10.2012, 23:22
    #37986716
sysinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
UPDATE Стоимость
SET Стоимость.текущая =стоимость.первоначальная+@@summa
...
Рейтинг: 0 / 0
07.10.2012, 03:58
    #37986845
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SET select sum(Обслуживание.суммаобслуживания), Стоимость.Код ОС from Обслуживание inner join Стоимость on Стоимость.Код ОС = Обслуживание.Код ОС 
group by Стоимость.Код ОС

fetch next from curs1 into @@summa, @@codos;

WHILE @@FETCH_STATUS = 0
BEGIN

	UPDATE Стоимость SET Стоимость = Стоимость.первоначальная +@@summa
        WHERE Код ОС= @@codos;
	
	fetch next from curs1 into @@summa;
END



Как-то так штоле (10 лет в гуголе), хотя можно и в 1 запрос написать.

P.S. проб ы вал пишется через о . Это важно.
...
Рейтинг: 0 / 0
07.10.2012, 03:59
    #37986846
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
ну там и во втором fetch тоже
Код: sql
1.
fetch next from curs1 into @@summa, @@codos
...
Рейтинг: 0 / 0
07.10.2012, 13:08
    #37986962
sysinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
Спасибо большое,все помогло!)
...
Рейтинг: 0 / 0
08.10.2012, 14:41
    #37988288
sysinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
Лагман,

курсор работает если есть данные в таблице Обслуживание, а если там нет данных то в строке ставиться NULL
как сделать чтобы если нет данных в @@summa вводился 0?
...
Рейтинг: 0 / 0
08.10.2012, 15:00
    #37988350
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется
sysinka,

Почитайте какую-нибудь книжку по SQL (хотя бы половину её :) ), будет более-менее понятно что как писать.
Из нулла сделать ноль можно с помощью coalesce.
А вообще эту тему надо переместить в MS SQL.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SELECT как посчитать сумму из таблицы с составным ключом, где ключ повторяется / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]