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

Откуда:
Сообщений: 2
Есть таблицы
T_ACCOUNT
AccountIDInfo
1info1
2info2

T_ACCOUNT_PARENT
AccountIDOrdersSum
1100
25000

T_ORDERS
OrderIDOrderAccountPriceSum
1190
217
322000
423000


Результат должен быть:
AccountIDInfoDiff
1info13


Написал скриптик, но еще нужно добавить столбец Diff c разницей.
автор
SELECT ac.*
FROM T_ACCOUNT ac
join T_ACCOUNT_PARENT par on (par.AccountID=ac.AccountID)
WHERE ac.AccountID IN
(
SELECT ord.OrderAccount
FROM T_ORDERS ord
GROUP BY ord.OrderAccount
HAVING SUM(ord.PriceSum) != par.OrdersSum
)

Подскажите?
8 ноя 12, 14:17    [13439779]     Ответить | Цитировать Сообщить модератору
 Re: Скриптик по вычислению разницы между вычисляемыми значениями, Подскажите?  [new]
Glory
Member

Откуда:
Сообщений: 104751
SELECT *
FROM T_ACCOUNT ac
join T_ACCOUNT_PARENT par on (par.AccountID=ac.AccountID)
LEFT OUTER JOIN 
(
SELECT ord.OrderAccount, SUM(ord.PriceSum) as sum1
FROM T_ORDERS ord
GROUP BY ord.OrderAccount
) x on x.OrderAccount = ac.AccountID and x.sum1 <> par.OrdersSum
8 ноя 12, 14:32    [13439897]     Ответить | Цитировать Сообщить модератору
 Re: Скриптик по вычислению разницы между вычисляемыми значениями, Подскажите?  [new]
ITman90
Member

Откуда:
Сообщений: 2
Glory,

Спасибо, подходит этот вариант:

SELECT ac.*,
(sum1-par.OrdersSum) AS Diff
FROM T_ACCOUNT ac
join T_ACCOUNT_PARENT par on (par.AccountID=ac.AccountID)
join 
(
SELECT ord.OrderAccount, SUM(ord.PriceSum) as sum1
FROM T_ORDERS ord
GROUP BY ord.OrderAccount
) x on x.OrderAccount= ac.AccountID and x.sum1!= par.OrdersSum
8 ноя 12, 15:18    [13440323]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить