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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2016, 09:59   #21
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Почему неправильная?
Потому, что sql не знаешь достаточно. Набросал, разбирайся
Код:
SELECT C.Name,U.DATA,U.SUMMA,
     CASE WHEN U.SumPayments > U.SumDealsBefore  
          THEN CASE WHEN U.SUMMA > U.SumPayments - U.SumDealsBefore 
                    THEN U.SumPayments - U.SumDealsBefore 
                    ELSE U.SUMMA END
          ELSE 0 END AS SumPayments
  FROM (SELECT D.ROW_ID,D.SUMMA,D.DATA,
            ISNULL((SELECT SUM(D1.SUMMA) FROM DEALS D1 WHERE D1.ROW_ID=D.ROW_ID AND D1.DATA<D.DATA),0) AS SumDealsBefore,
            ISNULL((SELECT SUM(P.SUMMA) FROM PAYMENTS P WHERE P.ROW_ID=D.ROW_ID),0) AS SumPayments
          FROM DEALS D) U 
    LEFT JOIN CLIENTS C ON U.ROW_ID=C.ROW_ID
Да, если по клиенту будут сделки с одной датой, то будет не правильно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.08.2016 в 10:02.
Аватар вне форума Ответить с цитированием
Старый 16.08.2016, 10:07   #22
ospts
Пользователь
 
Регистрация: 15.08.2016
Сообщений: 13
По умолчанию

Спасибо большое! Выборка работает!!!
ospts вне форума Ответить с цитированием
Старый 16.08.2016, 10:18   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И толку, что работает? Разберись внимательно. Если данных не много, то пойдет. Иначе нужно оптимизировать, особенно вложенный запрос
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2016, 11:02   #24
ospts
Пользователь
 
Регистрация: 15.08.2016
Сообщений: 13
По умолчанию

Конечно я проверю по всей БД!
ospts вне форума Ответить с цитированием
Старый 17.08.2016, 11:37   #25
ospts
Пользователь
 
Регистрация: 15.08.2016
Сообщений: 13
По умолчанию

Проверил по всей БД, запрос выполнялся неверно, получались многократные повторения. Разобрался, всё дело было в последней строке. Переделал чуток, теперь всё работает. Так что спасибо!
ospts вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с SQL запросом. Mat Bourn Помощь студентам 15 21.05.2015 20:51
Не могу разобраться с SQL запросом точнее с конструкцией if then else Pykhov БД в Delphi 15 27.08.2013 09:56
Помогите с SQL-запросом! lordaleksej БД в Delphi 2 03.12.2009 22:55
Помогите разобраться с запросом IgorBol Microsoft Office Access 2 06.10.2009 17:19
Помогите разобраться с SQL-запросом MasterofCDM БД в Delphi 5 04.07.2008 13:42