2009-10-15 1 views
0

У меня есть таблица с множеством предметов, каждая из которых имеет уникальный ItemID. Существует еще одна таблица с информацией об испытаниях, которые проводятся по этим статьям примерно раз в месяц (у некоторых может быть несколько тестов в месяц, а у некоторых может быть не один месяц), и каждая тестовая запись имеет полную дату mm/dd/yyyy. Я хотел бы отображать среднее значение одного из полей по всем данным на ежемесячной основе. Так если предположить, что я усреднение веса вещь, я хочу закончить со столом, как это:Таблица средних значений по дате для нескольких идентификаторов

Date AvgOfWeight 
1/09 24.55 
2/09 28.64 
3/09 22.39 

и так далее ...

Я знаю, что я могу сделать запрос, чтобы сделать средние значения, и я могу сгруппировать средние по определенным критериям, но есть ли простой способ группировать mm/dd/yyyy по месяцам?

ответ

0

Я люблю эту функцию strzero, которая может быть использована здесь так:

m_monthYear = strZero(year(date()),4) & "-" & strZero(month(date()),2) 

Результаты выглядят 2009-09 и могут быть заказаны по возрастанию, так как они начинаются с года. Вам просто нужно создать эту функцию strZero следующим образом:

Public function strZero(x_myLong as long, x_length as integer) as string 
Dim m_strZero as string 

m_strZero = trim(str(x_myLong)) 
do while len(m_strZero) <= x_length 
    m_strZero = "0" & m_strZero 
loop 
strZero = m_strZero 
end function 

Это было написано «на лету». Проверьте все параметры (если есть) для str, добавьте управление ошибками и адаптируйте их к своим потребностям. Возможно, вы захотите передать x_myLong в качестве варианта, чтобы, например, вернуть строку '0000'. Эта функция имеет несколько других применений при преобразовании чисел в строки фиксированной длины.

+0

Это в основном то, что я закончил делать. Однако я сделал все это в SQL. Я сгруппировал по году: год (дата), а затем по месяцу: месяц (дата), а затем для отображения целей я сделал выражение Year_Date: CStr (Year) + "/" + CStr (месяц). Спасибо за помощь – Matt