Могу ли я рассчитать разницу между двумя датами, если в другом столбце есть совпадающие данные, расчет MTBF - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь найти среднее время между отказами сериализованного оборудования. Я использую Access 2013 для своей базы данных, и у меня также есть Access 2016 Моя проблема заключается в том, что у меня есть несколько записей для серийных номеров с датами начала гарантии и датами поступления на работу. Мне нужно рассчитать дни между каждой работой, если серийные номера совпадают. Использование> для поиска дат и их последующего расчета прекрасно работало, пока у меня не было более одной записи для серийного номера.

Я пытался использовать свойство соединения между двумя таблицами, но не смог правильно рассчитать даты с более чем двумя записями

Ниже мое заявление sql. Я бы предпочел использовать VBA для расчета этого, если это возможно. Я могу опубликовать свои данные с критериями, которые я ищу, это мой первый пост.

SELECT qry_MTBF_Warranty_Date_Closed.BarCode, 
    tbl_Closed_Jobs.Cust_Part, 
    tbl_Closed_Jobs.Desc, 
    tbl_Closed_Jobs.Plant, 
    tbl_Closed_Jobs.Date_Ent, 
    qry_MTBF_Warranty_Date_Closed.Warranty_Activation,
    qry_MTBF_Warranty_Date_Closed.Warr_WO, 
    qry_MTBF_Warranty_Date_Closed.Cust_Ref, 
    qry_MTBF_Warranty_Date_Closed.Rel_No, 
    (tbl_Closed_Jobs.Date_Ent- 
    [qry_MTBF_Warranty_Date_Closed].Warranty_Activation) AS MTBF, 
    "C" AS Status, 
    tbl_Closed_Jobs.Prty
FROM qry_MTBF_Warranty_Date_Closed 
    INNER JOIN tbl_Closed_Jobs ON qry_MTBF_Warranty_Date_Closed.BarCode = tbl_Closed_Jobs.BarCode
WHERE (((tbl_Closed_Jobs.Date_Ent)>=([qry_MTBF_Warranty_Date_Closed].[Warranty_Activation])) AND ((tbl_Closed_Jobs.Prty) Not Like "1C*"))
ORDER BY tbl_Closed_Jobs.Cust_Part;

Я ожидаю, что у меня будут выходные данные только в тех случаях, когда мой серийный номер (штрих-коды) совпадает, а коды приоритета не равны 1C. Я могу опубликовать файл Excel, если это поможет.

Спасибо

Итак, у меня есть SQL, чтобы найти количество дней между двумя датами, если есть только два соответствующих штрих-кода. Мне нужно знать разницу дней между каждой записью. Приведенный ниже sql даст мне минимальное и максимальное количество дней и разницу между ними, но некоторые штрих-коды будут иметь несколько записей, и мне нужно знать разницу между каждой записью, если штрих-коды совпадают. ВЫБЕРИТЕ t1.BarCode, max (abs (DateDiff ("d", t3.Date_, t1.Date_Warranty))) AS DateDifference ОТ tbl_MTBF_Multiple_Entries КАК ВНУТРЕННЕЕ СОЕДИНЕНИЕ t1 (ВЫБЕРИТЕ t2.BarCode как BarCode_, Макс (t2.Date_Ent) как Date_ FROM tbl_MTBF_Multiple_Entries t2 GROUP BY t2.BarCode ) КАК t3 ВКЛ t1.BarCode = t3.Barcode_ ГДЕ t1.Date_Warranty

1 Ответ

0 голосов
/ 26 мая 2019

Попробуйте использовать встроенный vba DateDiff ()

Function DateDiff(Interval As String, Date1, Date2, [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1])
    Member of VBA.DateTime

Пример:

' Return the number of days remaining in the taxation year from the present date.
' Positive value <= 365 = taxation year has # days left.
' Positive value > 365, date is before taxation year.
' Negative value = beyond taxation year
Public Function daysRemainingInTaxYear() As Integer

    Dim myTaxationYear
    Dim myEoY As Variant

    myTaxationYear = DLookup("TaxationYear", "myParametersT", "ID=1")

    myEoY = "31/12/" & myTaxationYear
    daysRemainingInTaxYear = DateDiff("d", Now(), myEoY)
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...