Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как лучше вычислить суммарное сальдо для части счетов?  [new]
гр к
Guest
Есть таблица счетов и таблица сальдо по услугам.
Связь по полю счет один(таблица счетов) ко многим(таблица сальды).
Нужно выбрать определенные счета и для них рассчитать суммарное сальдо за выбранный период.
Пока ничего лучше не придумал, как селект по выборке нужных аккаунтов
select account,f2,f3, .. fn 
from accounts 
where ...

внутренне сджойнить с
(
select account, sum(saldo) as total
from SAL
group by account
where period='01.03.2014'
) s

Но тут получается, что суммирование сальдо вообще для всех счетов будет, а это, наверное, неправильно?
-----
Не люблю Progress OpenEdge
5 апр 14, 18:35    [15837633]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше вычислить суммарное сальдо для части счетов?  [new]
гр к
Guest
Базы на MS SQL 2005 standard.
5 апр 14, 18:41    [15837650]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше вычислить суммарное сальдо для части счетов?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Смешались кони люди.
Или вы не понимаете что такое сальдо или вы не умеете выражёвываться.
Хотя язык бухгалтеров всегда был сложнее клингонскго.

У вас ест обороты по типам услуг, или всё-таки сальдо по счётам на каждый день (каждый или на день оборотов?).
И услуги каким боком к проблеме?
Может вы имели ввиду по балансовым группам?
Нипонятно.

И изучайте синтаксис, ну хотябы так написали:
SELECT	S.Account, Sum(S.Saldo) AS Total
FROM	dbo.SAL AS S		-- Не опускайте имена схемы, это плохо, привыкайте к алиасам
WHERE	S.Period = '20140301'	-- есть более надёжное и универсальное написание даты, не зависящее от языка сессии
GROUP BY S.Account		-- group by пишется после where
Хотя запрос совершенно бесполезный.

Базы? А почему во множественном числе?
5 апр 14, 23:30    [15838317]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше вычислить суммарное сальдо для части счетов?  [new]
гр к
Guest
Mnior, в таблице сальдо по услугам на отчетный период, запрос вычисляет именно суммарное сальдо за отчетный период для каждого аккаунта.
Баз несколько - по числу отделений.
С where после group by я описался, конечно.
ЗЫ Таблица сальдооборотов примерно такую структуру имееет:
Отчетный период; Услуга; Сальдо по услуге
6 апр 14, 08:23    [15838754]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше вычислить суммарное сальдо для части счетов?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
гр к
внутренне сджойнить с
Вы просто не знаете как писать JOIN? И хотите чтобы за вас это сделали другие? Тогва вам сюда. Или изучайте. Как только, так сразу выкладывайте сюда полный запрос, хотя он элементарен.
гр к
Но тут получается, что суммирование сальдо вообще для всех счетов будет, а это, наверное, неправильно?
А счего вы решили и почему вы гадаете?
- Почему вы убили мужа?
- Его нет дома с утра до вечера. Наверно он всё это время с любовницей забавлялся. Вот и убила.
Чтобы увидеть как оно фунчиклирует внутрях нужно просто нажать на панели инструментов SSMS кнопочку "Включить план запроса в результат".
А далее научится его понимать, почитав всё туже документацию в BOL-е.

1. Если есть нужные индексы, скорее всего будет не так.
2. Не обязательно означает что получение данных (сальдо за период) по всем счетам, а потом отсеивание части будет не лучше, всё зависит от характера запроса.
К примеру, если вы запрашиваете почти все счета, то лучше один раз быстро получить данные по всем и потом убрать небольшую часть, чем очень много раз запрашивать по одному счёту.
Т.к. поиск нужного блока в индексе - не бесплатно обходится, даже если быстро, и поэтому бывает лучше один раз найти один раз этот блок в котором подряд будут идти все нужные данные, пусть даже чуть больше чем надо.
6 апр 14, 15:24    [15839412]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить