У меня есть таблица с полями: resourceID
, work_date
, stringValue
Возникли проблемы с помощью Partition() в Access
Я пытаюсь построить запрос доступа, который будет показывать счетчик сколько различных resourceID
чисел с данные stringValue
происходят в каждую неделю за определенный диапазон дат. Использование partition()
, кажется, самый простой подход, однако, когда я использую следующий запрос:
select partition([work_date],#6/6/2011#,#9/4/2011#,7),stringValue,
count(resourceID) from
(select distinct resourceID,work_date,stringValue from myTable) as subQuery
group by partition([work_date],#6/6/2011#,#9/4/2011#,7), stringValue
то у меня есть две проблемы:
-Мои даты в конечном итоге отформатирован в виде целых чисел, например:
:40699
40700:40706
40784:40790
, тогда как я хочу, чтобы они появились, как, например, 6/6/2011:6/12/2011
(я также не хочу, значение :40699
)
- resourceID
подсчитывается более одного раза в неделю, если он появляется в течение более одного дня недели; Я просто хочу, чтобы он учитывался один раз за каждый stringValue
, если он появляется на этой неделе. Я думал, что квалификатор distinct
выполнит это, но это не так.
EDIT: Я решил лишний resourceID
счет, поставив перегородку в подзапроса следующим образом:
select datePartition,stringValue,count(ID)
from (select partition() as datePartition, stringValue, ID
from (select distinct stringvalue,ID,work_date))
group by datePartition,stringvalue
, а затем потянув count(ID)
из этого подзапроса. Тем не менее, пока не удается определить форматирование даты.
Я думал об использовании split() тоже, надеялся, что Access имеет более элегантное решение. Очевидно нет. Спасибо за подсказку об использовании предложения WHERE, чтобы избавиться от 40699. – sigil