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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2011, 16:10   #11
ISS
 
Регистрация: 04.05.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
...А теперь еще добавте сюда исходный запрос в Access (в том запросе, что вы привели черт ногу сломает)....
это и есть исходный запрос))

Цитата:
Сообщение от Аватар Посмотреть сообщение
... и распишите соответствие между таблицами и полями Access и MS SQL. Хотя бы тех, которые упоминаются в исходном запросе.
а это сейчас сделаю
ISS вне форума Ответить с цитированием
Старый 06.05.2011, 16:20   #12
ISS
 
Регистрация: 04.05.2011
Сообщений: 7
По умолчанию

Таблицы
Штат = Wtat
Должности = Doljnost
Назначения = Naznachenie

Поля
Kol = kolichestvo_cotp
kod_d = kod_doljnosti
kod_p = kod_podrazdel
ISS вне форума Ответить с цитированием
Старый 06.05.2011, 17:31   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте следующее
Код:
SELECT W.kolichestvo_cotp,W.kod_doljnosti,W.kod_podrazdel,
    W.kolichestvo_cotp-COUNT(*) AS Vac,
    COUNT(*) AS Kolz
  FROM Wtat W
    LEFT JOIN Naznachenie N ON N.kod_doljnosti=W.kod_doljnosti AND N.kod_podrazdel=W.kod_podrazdel
  GROUP BY W.kolichestvo_cotp,W.kod_doljnosti,W.kod_podrazdel
  ORDER BY W.kod_doljnosti
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.05.2011, 20:40   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не учел в предыдущем посте ситуацию, когда все должности по подразделению вакантны
Код:
SELECT W.kolichestvo_cotp,W.kod_doljnosti,W.kod_podrazdel,
    W.kolichestvo_cotp-SUM(CASE WHEN N.kod_doljnosti IS NULL THEN 0 ELSE 1 END) AS Vac,
    SUM(CASE WHEN N.kod_doljnosti IS NULL THEN 0 ELSE 1 END) AS Kolz
  FROM Wtat W
    LEFT JOIN Naznachenie N ON N.kod_doljnosti=W.kod_doljnosti AND N.kod_podrazdel=W.kod_podrazdel
  GROUP BY W.kolichestvo_cotp,W.kod_doljnosti,W.kod_podrazdel
  ORDER BY W.kod_doljnosti
Кстати если данные передаются в DataSet в дельфях, то поле Vac в запросе не обязательно формировать, а можно сделать вычисляемым в программе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатный аналог access'а Marsel737 БД в Delphi 11 22.09.2010 14:54
Аналог Split в Delphi? apromix Помощь студентам 6 21.09.2010 22:17
есть ли в delphi аналог функции Time() из С++? Juffin Общие вопросы Delphi 1 11.04.2010 18:29
Аналог KillWatcher на Delphi Dmitriy_ZDO Работа с сетью в Delphi 3 28.09.2008 21:42
Аналог mbsplit.ocx vb в Delphi Арт БД в Delphi 1 11.03.2007 14:30