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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2009, 12:38   #1
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию Расчет в запросе!

Привет!
Нужно сделать чтобы находило разницу между SUM_OF_KOL_KG и SUM_OF_KOL_M.

Код:
SQL.Add('SELECT prihod.KOD_PROD, SUM( prihod.KOL_KG ) SUM_OF_KOL_KG, SUM( prihod.KOL_M ) SUM_OF_KOL_M');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V>="'+datetostr(sDateEdit1.Date)+'" and prihod.Data_V <="'+datetostr(sDateEdit2.Date)+'")');
    SQL.Add('GROUP BY prihod.KOD_PROD');
pobedin вне форума Ответить с цитированием
Старый 02.09.2009, 12:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пробуй так:
Код:
SQL.ADD('select ');
SQL.Add('(SELECT prihod.KOD_PROD, SUM( prihod.KOL_KG ) SUM_OF_KOL_KG, SUM( prihod.KOL_M ) SUM_OF_KOL_M');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V>="'+datetostr(sDateEdit1.Date)+'" and prihod.Data_V <="'+datetostr(sDateEdit2.Date)+'")');
    SQL.Add('GROUP BY prihod.KOD_PROD))');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2009, 12:53   #3
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

эээ... не совсем понял. мне нужно добавить код, чтобы найти разницу суммированных полей, т.е.
Код:
(SUM_OF_KOL_KG  - SUM_OF_KOL_M) as field.
но не работает, т.к. этих полей нету в таблице. Как по другому сделать?
pobedin вне форума Ответить с цитированием
Старый 02.09.2009, 12:55   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
Лампочка

Видимо, необходимо сделать так:
Код:
SQL.Add('SELECT prihod.KOD_PROD, SUM( prihod.KOL_KG ) SUM_OF_KOL_KG, SUM( prihod.KOL_M ) SUM_OF_KOL_M, SUM (prihod.KOL_KG -prihod.KOL_M) DIFF_OF_KOL');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V>="'+datetostr(sDateEdit1.Date)+'" and prihod.Data_V <="'+datetostr(sDateEdit2.Date)+'")');
    SQL.Add('GROUP BY prihod.KOD_PROD');
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 02.09.2009, 12:57   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

можно так

Код:
SELECT 
  p.KOD_PROD, 
  SUM(p.KOL_KG) SUM_OF_KOL_KG, 
  SUM(p.KOL_M) SUM_OF_KOL_M,
  SUM(p.KOL_KG - p.KOL_M) sum_2
FROM prihod p
WHERE 0=0
  and p.DATA_V>= :p0
  and p.Data_V <= :p1
GROUP BY p.KOD_PROD
soleil@mmc вне форума Ответить с цитированием
Старый 02.09.2009, 12:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так будет выглядеть, даже если поля не определены поименно:
Код:
Select (SELECT SUM( prihod.KOL_KG ) FROM prihod Where...)-(SELECT SUM( prihod.KOL_KG ) FROM prihod Where...)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2009, 13:06   #7
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

работает. спасибо. а может еще подскажите как выделить в дате месяц. пробовал month и substr. чего-то ругается. таблица в paradox...
заранее спасибо.
pobedin вне форума Ответить с цитированием
Старый 02.09.2009, 13:29   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

попробуй с датой сделать так (я ваще не пою чо он там ваш парадокс умеет - вот полазил в поисковике и чота нарыл)

Код:
select Format(Field_DateTime, 'mm.yyyy') month_year
from your_table
З.Ы.: есть локальная справка для локальных БД - ищи у себя на компе файл LOCALSQL.HLP

вот что я там нашел
раз
Код:
SELECT SUBSTRING("ABCDE" FROM 2 FOR 3) AS Sub
FROM Country
и два
Код:
SELECT SaleDate,
  EXTRACT(YEAR FROM saledate) AS YY,
  EXTRACT(MONTH FROM saledate) AS MM,
  EXTRACT(DAY FROM saledate) AS DD
FROM Orders
и их комбинация
Код:
SELECT SaleDate,
  SUBSTRING(CAST(CAST(SaleDate AS DATE) AS CHAR(10)) FROM 1 FOR 1)
FROM Orders
тебе должно хватить

Последний раз редактировалось soleil@mmc; 02.09.2009 в 14:28.
soleil@mmc вне форума Ответить с цитированием
Старый 02.09.2009, 15:03   #9
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

Код:
SELECT SaleDate,
  EXTRACT(MONTH FROM saledate) AS MM,
FROM Orders
заработало.... только теперь при группировке по коду и месяцу ругается на поле MM, пишет, что его нету... ((
pobedin вне форума Ответить с цитированием
Старый 02.09.2009, 16:55   #10
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну так и надо писать
Код:
group by EXTRACT(MONTH FROM saledate)
soleil@mmc вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кредит, расчет. valerij Microsoft Office Excel 6 14.04.2009 23:15
Расчет движения voodoomedved Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 25.02.2009 23:07
Расчет численности популяции MyVLink Паскаль, Turbo Pascal, PascalABC.NET 2 07.06.2008 05:30
Расчет средневзешенного zoman Microsoft Office Excel 2 05.12.2007 10:15
Расчет стажа работы John_chek Общие вопросы Delphi 6 13.04.2007 13:38