Сделать этот отчет в одном SQL в C # - PullRequest
0 голосов
/ 21 сентября 2010

РЕДАКТИРОВАТЬ: база данных Access 2007

Привет, я новичок здесь, и мне нужна помощь:

У меня есть три таблицы:

  1. техников (Id, tech_name, is_active)
  2. type_services (идентификатор, имя_сервера, is_active)
  3. сервисов (Id, date_time, prod_name, количество, serv_type, tech_name, is_active)

Я должен сделать отчет, содержащий:

  1. Количество услуг на одну технологию (SUM (количество))
  2. Количество видов услуг на одну технологию
  3. Всего за каждую услугу
  4. Всего услуг
* +1034 * Пример: * * одна тысяча тридцать пять

TECH_NAME TYPE_SERV1 TYPE_SERV2 TYPE_SERV3 TYPE_SERV4 TYPE_SERV5 TYPE_SERV6 TOTAL<br/>
NAME1     2          0          3          7          15         52         79
NAME2     0          0          1          6          18         45         70
NAME3     0          0          2          3          13         38         56
NAME4     1          1          0          3          11         21         37<br/>
TOTAL     3          1          6          19         57         156        242<br/>

Все с использованием интервала дат

ПРИМЕЧАНИЕ. В таблице служб я непосредственно использую строковое имя serv_type и tech_name, поэтому не использую числовой идентификатор

Это NEW sql, он работает, но если возможно сделать все это в предложении SQL без дополнительного кода C #, потому что не всегда есть службы одного типа на службах

ВЫБРАТЬ
COUNT (Srvs.serv_type) AS numReg,
Сумма (Srvs.quantity) AS,
Techs.tech_name AS tchs,
Srvs.serv_type AS srv
ОТ
Техники AS Techs,
type_services AS TySrv,
услуги AS Srvs
ГДЕ
(Techs.is_active = true И
TySrv.is_active = true И
Srvs.is_active = true) И
(Srvs.date_time МЕЖДУ # 2010/06/01 00: 00: 00 # И # 2010/08/30 23: 59: 59 #
AND Srvs.tech_name = Techs.tech_name)
AND Srvs.serv_type = TySrv.serv_name
GROUP BY Srvs.serv_type, Techs.tech_name
ЗАКАЗАТЬ Techs.tech_name ASC

До этого SQL у меня было три SQL, чтобы сделать этот отчет xD, поэтому мне нужно, чтобы это было проще с одним SQL

Спасибо, и я надеюсь, что вы знаете, что я пытаюсь сказать

1 Ответ

0 голосов
/ 21 сентября 2010

В Access, я думаю, вы хотите что-то вроде этого:

TRANSFORM Sum(services.quantity) AS SumOfquantity
SELECT services.tech_name, 
       Sum(services.quantity) AS [Total Of Quantity], 
       Count(services.serv_type) AS [Count of Services]
FROM (services 
INNER JOIN technicians ON services.tech_name = technicians.tech_name) 
INNER JOIN type_services ON services.serv_type = type_services.serv_name
WHERE services.is_active=True 
    AND technicians.is_active=True
    AND type_services.is_active=True 
    AND services.date_time Between #6/1/2010# And #8/30/2010 23:59:59#
GROUP BY services.tech_name
PIVOT services.serv_type

, если вы хотите изменить даты, вы можете использовать параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...