Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом 
:(
    Опции темы
myarlekin
Дата 14.7.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Есть маленькая задачка
Есть табличка b в ней есть поля a-дата и с - деньги
К Примеру есть в них данные
a c
21.01.08 1000
22.01.08 500
23.01.08 3000
.........................

Должен запрос посчитать так

21.01.08 1000
22.01.08 1500
23.01.08 4500
........................

Вот может кто поможет в моей беде
PM MAIL   Вверх
Butsa
Дата 14.7.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 6.6.2006
Где: Украина,Харьков

Репутация: нет
Всего: нет



Код

DROP TABLE #Finance
CREATE TABLE #Finance
(
    id int IDENTITY not null, 
    date datetime,
    mony money
)

insert into #Finance values ('01/21/8','1000')
insert into #Finance values ('01/22/8','500')
insert into #Finance values ('01/23/8','3000')
select * from #finance
declare @count int
declare @max int
declare @sumCount money
set @count = 1 
set @sumCount = '0'
set @max = (select max(id) from #finance)
while @count <= @max
begin
    set @sumCount = @sumCount + (select mony from #finance where id = @count)
    update #finance set #finance.mony = @sumCount from #finance where id = @count  
    set @count = @count + 1 
end
select * from #finance


Написал на TSQL думаю разберешься
PM MAIL ICQ   Вверх
myarlekin
Дата 14.7.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Это банально , а если там 500000 записей это придется  пол дня сидеть, а надо чтобы считалось быстро 
PM MAIL   Вверх
Butsa
Дата 14.7.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 6.6.2006
Где: Украина,Харьков

Репутация: нет
Всего: нет



По-другому не знаю, посмотрим, мож кто нить идею по интереснее подкинет. 
PM MAIL ICQ   Вверх
Akina
Дата 14.7.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Код

SELECT b1a, Sum(bc) AS Sumbc
FROM
(
SELECT bc, b1c, ba, b1a
FROM 
(
SELECT b.a as ba, b.c as bc, b1.a as b1a, b1.c as b1c
FROM b, b AS b1
)
WHERE ba<=b1a
)
GROUP BY b1a;
 smile 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
myarlekin
Дата 14.7.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Цитата(Akina @  14.7.2008,  14:02 Найти цитируемый пост)
SELECT b1a, Sum(bc) AS Sumbc
FROM
(
SELECT bc, b1c, ba, b1a
FROM 
(
SELECT b.a as ba, b.c as bc, b1.a as b1a, b1.c as b1c
FROM b, b AS b1
)
WHERE ba<=b1a
)
GROUP BY b1a;


Что-то не прет пишет 
Цитата

Incorrect syntax near the keyword 'WHERE'.

PM MAIL   Вверх
myarlekin
Дата 14.7.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Цитата(myarlekin @  14.7.2008,  15:30 Найти цитируемый пост)
SELECT b1a, Sum(bc) AS Sumbc
FROM
(
SELECT bc, b1c, ba, b1a
FROM 
(
SELECT b.a as ba, b.c as bc, b1.a as b1a, b1.c as b1c
FROM b, b AS b1
)
WHERE ba<=b1a
)
GROUP BY b1a;


ошибку нашел но считает не правильно - какую-то фигню не реальную считает

PM MAIL   Вверх
myarlekin
Дата 14.7.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Цитата

DROP table #temp
create table #temp 
(
a datetime,
c money
)

INSERT INTO #temp (a,c) SELECT a, c FROM b

SELECT     a,
                          (SELECT     SUM{с}  
                            FROM      #temp g
                            WHERE     g.a <= n.a) AS itog
FROM         #temp n



Вот что получилось может кому пригодится, работает быстро и эффективно (опробовано на 200000 записей)
(за место фигурных скобок поставить обычные круглые)
В запросе  b  у меня сумма операций за день
Тема закрыта

Это сообщение отредактировал(а) myarlekin - 14.7.2008, 16:39
PM MAIL   Вверх
Magnifico
Дата 14.7.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



Код

CREATE TABLE #Finance
(
    id int IDENTITY not null, 
    date datetime,
    mony money
)

-----------------------------------------------------------------
insert into #Finance values ('2008/21/01','100')
insert into #Finance values ('2008/22/01','200')
insert into #Finance values ('2008/23/01','300')
insert into #Finance values ('2008/24/01','400')
insert into #Finance values ('2008/25/01','500')
insert into #Finance values ('2008/26/01','600')
insert into #Finance values ('2008/27/01','700')
insert into #Finance values ('2008/28/01','800')
insert into #Finance values ('2008/29/01','900')
insert into #Finance values ('2008/30/01','1000')
--------------------------------------------------------------
select sum(t1.mony)
from #finance t1
join #finance t2
on t1.id <=t2.id
group by t2.id



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
myarlekin
Дата 15.7.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Цитата(Magnifico @  14.7.2008,  16:55 Найти цитируемый пост)
Выделить всёкод SQL
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
    
CREATE TABLE #Finance
(
    id int IDENTITY not null, 
    date datetime,
    mony money
)
-----------------------------------------------------------------
insert into #Finance values ('2008/21/01','100')
insert into #Finance values ('2008/22/01','200')
insert into #Finance values ('2008/23/01','300')
insert into #Finance values ('2008/24/01','400')
insert into #Finance values ('2008/25/01','500')
insert into #Finance values ('2008/26/01','600')
insert into #Finance values ('2008/27/01','700')
insert into #Finance values ('2008/28/01','800')
insert into #Finance values ('2008/29/01','900')
insert into #Finance values ('2008/30/01','1000')
--------------------------------------------------------------
select sum(t1.mony)
from #finance t1
join #finance t2
on t1.id <=t2.id
group by t2.id




Данный код не практичен при большом количестве записей , если в таблице будет 200000 записей то тогда этот скрипт будет выполняться много-много-много времени а нужна быстрота и эфективность   
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.